#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define fi first
#define se second
#define pb push_back
#define sz(a) (ll) a.size()
#define all(x) (x).begin(), (x).end()
#define rep(i, a, b) for(ll i=a; i<b; i++)
#define rrep(i, a, b) for(ll i=a; i>=b; i--)
#define vl vector<ll>
#define vpll vector<pair<ll, ll>>
#define vvl vector<vector<ll>>
#define pll pair<ll, ll>
ll n, m, Q;
vvl adj;
vl dist;
void f() {
cin >> n >> m >> Q;
adj.assign(n*2, vl(0));
rep(i, 0, n*2){
adj[i].pb((i+1)%(2*n));
adj[i].pb((i-1+2*n)%(2*n));
}
rep(i, 0, m){
ll x; cin >> x;
adj[x].pb(x+n);
adj[x+n].pb(x);
}
rep(i, 0, Q){
ll a, b; cin >> a >> b;
dist.assign(2*n, -1);
dist[a]=0;
queue<pll> q;
q.push({0, a});
while(!q.empty()){
ll id=q.front().se, cnt=q.front().fi;
q.pop();
if(dist[id]!=cnt) continue;
if(id==b){
cout << dist[id] << endl;
break;
}
for(auto& u : adj[id]){
if(dist[u]==-1 || dist[u]>dist[id]+1){
dist[u]=dist[id]+1;
q.push({dist[u], u});
}
}
}
}
}
int main() {
int tc = 1;
// cin >> tc;
for (int i = 1; i <= tc; i++) {
// cout << '#' << i << endl;
f();
cout << endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |