Submission #1228981

#TimeUsernameProblemLanguageResultExecution timeMemory
1228981Rokas159Circle Passing (EGOI24_circlepassing)C++20
0 / 100
2 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define endl '\n'

int n, m, Q;

vector<vector<int>> adj;

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


    cin >> n >> m >> Q;

    adj.resize(2*n);

    for (int i = 0; i < m; i++) {
        int k;
        cin >> k;

        adj[k].push_back((k+n)%(2*n));
        adj[(k+n)%(2*n)].push_back(k);
    }

    for (int i = 0; i < 2*n; i++) {
        adj[i].push_back((i+1)%(2*n));
        adj[(i+1)%(2*n)].push_back(i);
    }

    int dist[2*n];
    vector<bool> vis(2*n, false);

    queue<int> q;
    q.push(0);
    dist[0] = 0;

    while (!q.empty()) {
        int s = q.front();
        q.pop();

        vis[s] = true;

        for (int u : adj[s]) {
            if (!vis[u]) {
                dist[u] = dist[s] + 1;
                vis[u] = true;
                q.push(u);
            }
        }
    }

    for (int i = 0; i < Q; i++) {
        int a, b;
        cin >> a >> b;

        cout << dist[b] << endl;
    }

    cout.flush();
    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...