Submission #1168148

#TimeUsernameProblemLanguageResultExecution timeMemory
1168148SheepHeadsCircle Passing (EGOI24_circlepassing)C++20
0 / 100
2 ms324 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;

int n, m, q;
const int INF = 1e9+7;

vector<vector<int>> adjList;
vector<int> dist;

void bfs(int node){
    dist.at(node) = 0;

    queue<int> que;
    que.push(node);

    while(!que.empty()){
        int cur = que.front();
        que.pop();

        for(auto itr : adjList.at(cur)){
            if(dist.at(itr) == INF){
                dist.at(itr) = dist.at(cur)+1;
                que.push(itr);
            }
        }
    }
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin>>n>>m>>q;

    adjList = vector<vector<int>>(2*n);
    dist = vector<int>(2*n, INF);

    for(int i = 0; i<m; i++){
        int x;
        cin>>x;
        adjList.at(x).push_back(x+n);
        adjList.at(x+n).push_back(x);
    }

    adjList.at(0).push_back(2*n-1);
    adjList.at(0).push_back(1);

    adjList.at(2*n-1).push_back(0);
    adjList.at(2*n-1).push_back(2*n-2);

    for(int i = 1; i<2*n-1; i++){
        adjList.at(i).push_back(i+1);
        adjList.at(i).push_back(i-1);
    }

    bfs(0);

    while(q--){
        int x, y;
        cin>>x>>y;

        cout << dist.at(y) << "\n";
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...