답안 #1015702

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1015702 2024-07-06T16:45:05 Z andrei_iorgulescu Jakarta Skyscrapers (APIO15_skyscraper) C++14
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>

using namespace std;

int hsh(pair<int,int> pr)
{
    return pr.first * 31000 + pr.second;
}

pair<int,int> dehsh(int x)
{
    return {x / 31000, x % 31000};
}

int n,m;
int b[30005],p[30005];
unordered_map<int, bool> viz,luat;
unordered_map<int, int> d;
vector<int> what[30005];
int str,fin;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n >> m;
    for (int i = 1; i <= m; i++)
        cin >> b[i] >> p[i],what[b[i]].push_back(p[i]);
    str = b[1],fin = b[2];
    deque<pair<int,int>> q;
    q.push_back({str,0});
    viz[hsh({str,0})] = true;
    int lul = 2e7;
    while (!q.empty())
    {
        pair<int,int> nod = q.front();
        int dehnod = hsh(nod);
        q.pop_front();
        if (luat[dehnod])
            continue;
        cate++;
        if (cate > lul)
            assert(false);
        luat[dehnod] = true;
        int dist = d[dehnod];
        if (nod.second != 0)
        {
            pair<int,int> vec;
            vec = {nod.first,0};
            int dehvec = hsh(vec);
            if (!viz[dehvec] or d[dehvec] > dist)
            {
                viz[dehvec] = true;
                q.push_front(vec);
                d[dehvec] = dist;
            }

            vec = {nod.first + nod.second,nod.second};
            dehvec = hsh(vec);
            if (!viz[dehvec] and vec.first >= 0 and vec.first < n)
            {
                viz[dehvec] = true;
                q.push_back(vec);
                d[dehvec] = dist + 1;
            }

            vec = {nod.first - nod.second,nod.second};
            dehvec = hsh(vec);
            if (!viz[dehvec] and vec.first >= 0 and vec.first < n)
            {
                viz[dehvec] = true;
                q.push_back(vec);
                d[dehvec] = dist + 1;
            }
        }
        else
        {
            for (auto it : what[nod.first])
            {
                pair<int,int> vec = {nod.first,it};
                int dehvec = hsh(vec);
                if (!viz[dehvec] or d[dehvec] > dist)
                {
                    viz[dehvec] = true;
                    q.push_front(vec);
                    d[dehvec] = dist;
                }
            }
        }
    }
    if (!viz[hsh({fin,0})])
        cout << -1;
    else
        cout << d[hsh({fin,0})];
    return 0;
}

Compilation message

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:42:9: error: 'cate' was not declared in this scope
   42 |         cate++;
      |         ^~~~