Submission #1241124

#TimeUsernameProblemLanguageResultExecution timeMemory
1241124aminabouakazCircle Passing (EGOI24_circlepassing)C++20
20 / 100
2093 ms12204 KiB

#include <bits/stdc++.h>
using namespace std;

vector<int> adj[200005];

int bfs(int x, int y, int n) {
    vector<int> d(n, -1);
    queue<int> q;
    d[x] = 0;
    q.push(x);
    while (!q.empty()) {
        int u = q.front(); q.pop();
        for (int v : adj[u]) {
            if (d[v] == -1) {
                d[v] = d[u] + 1;
                if (v == y) return d[v];
                q.push(v);
            }
        }
    }
    return -1;
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int N, M, Q; cin >> N >> M >> Q;
    int T = 2 * N;
    for (int i = 0; i < T; ++i) {
        adj[i].push_back((i + 1) % T);
        adj[i].push_back((i - 1 + T) % T);
    }
    for (int i = 0, k; i < M; ++i) {
        cin >> k;
        adj[k].push_back(k + N);
        adj[k + N].push_back(k);
    }
    while (Q--) {
        int x, y; cin >> x >> y;
        cout << bfs(x, y, T) << '\n';
    }
}
#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...