#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int, int>
#define fi first
#define se second
const int N = 1e6 + 5;
int L[N], n, k, q;
vector<int> g[N];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> k >> q;
for (int i = 1; i <= n; i++) cin >> L[i];
for (int j = 1; j <= k; j++) {
vector<int> st;
for (int i = 1; i <= n; i++) if (L[i] >= j) st.push_back(i);
for (int t = 1; t < st.size(); t++) {
int u = st[t - 1], v = st[t];
g[u].push_back(v);
g[v].push_back(u);
}
}
while (q--) {
int A, B;
cin >> A >> B;
if (A == B) {cout << "0\n"; continue;}
vector<int> d(n + 1, -1);
queue<int> q;
d[A] = 0;
q.push(A);
while(!q.empty()){
int u = q.front(); q.pop();
if(u == B) break;
for(int v: g[u]) if (d[v] == -1) {
d[v] = d[u] + 1;
q.push(v);
}
}
if (d[B] == -1) cout << -1 << "\n";
else cout<< max(0, d[B] - 1) <<"\n";
}
}
| # | 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... |