Submission #1304354

#TimeUsernameProblemLanguageResultExecution timeMemory
1304354KietJRailway Trip (JOI17_railway_trip)C++20
5 / 100
2096 ms589824 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...