Submission #827042

#TimeUsernameProblemLanguageResultExecution timeMemory
827042HanksburgerPassport (JOI23_passport)C++17
16 / 100
2064 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; int dist[2505][2505], ans[200005]; vector<int> adj[200005]; queue<int> q; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n; for (int i=1; i<=n; i++) { int l, r; cin >> l >> r; for (int j=l; j<=r; j++) adj[i].push_back(j); } for (int i=1; i<=n; i++) { for (int j=1; j<=n; j++) dist[i][j]=1e8; dist[i][i]=0; q.push(i); while (!q.empty()) { int u=q.front(); q.pop(); for (int v:adj[u]) { if (dist[i][u]+1<dist[i][v]) { dist[i][v]=dist[i][u]+1; q.push(v); } } } } for (int i=1; i<=n; i++) { ans[i]=min(dist[i][1]+dist[1][n], dist[i][n]+dist[n][1]); for (int j=2; j<n; j++) ans[i]=min(ans[i], dist[i][j]+dist[j][1]+dist[j][n]-1); } cin >> m; for (int i=1; i<=m; i++) { int x; cin >> x; if (ans[x]<5e7) cout << ans[x] << '\n'; else cout << -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...
#Verdict Execution timeMemoryGrader output
Fetching results...