Submission #1158883

#TimeUsernameProblemLanguageResultExecution timeMemory
1158883vladiliusRailway Trip (JOI17_railway_trip)C++20
20 / 100
2096 ms17220 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; #define pb push_back #define ff first #define ss second int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k, q; cin>>n>>k>>q; vector<int> a(n + 1), d[k + 1]; for (int i = 1; i <= n; i++){ cin>>a[i]; d[a[i]].pb(i); } vector<int> g[n + 1]; set<int> st; for (int i = k; i > 0; i--){ for (int j: d[i]) st.insert(j); for (int j: d[i]){ auto it = st.find(j); if (it != prev(st.end())){ auto it1 = next(it); g[j].pb(*it1); g[*it1].pb(j); } if (it != st.begin()){ auto it1 = prev(it); g[j].pb(*it1); g[*it1].pb(j); } } } while (q--){ int x, y; cin>>x>>y; vector<int> dist(n + 1, 1e9); queue<int> q; dist[x] = -1; q.push(x); while (!q.empty()){ int v = q.front(); q.pop(); for (int u: g[v]){ int f = dist[v] + 1; if (f < dist[u]){ dist[u] = f; q.push(u); } } } cout<<dist[y]<<"\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...