Submission #745810

#TimeUsernameProblemLanguageResultExecution timeMemory
745810vjudge1Event Hopping (BOI22_events)C++17
0 / 100
42 ms100652 KiB
#include <iostream> #include <vector> using namespace std; struct event { int s, e; }; int n, q, a, b; vector <event> v(5001); vector <vector <int>> g(1e5 + 1); vector <vector <int>> d(5001, vector <int>(5001, 1e9)); vector <bool> done(5001, false); void dfs(int x) { if (done[x]) return; done[x] = true; for (int i : g[x]) { dfs(i); for (int j = 1; j <= n; j++) d[x][j] = min(d[x][j], d[i][j] + 1); } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> q; if (n > 5000) return 0; for (int i = 1; i <= n; i++) { cin >> v[i].s >> v[i].e; d[i][i] = 0; } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (v[i].e >= v[j].s && v[i].e < v[j].e) g[i].push_back(j); if (v[i].e == v[j].e) d[i][j] = 1; } } for (int i = 1; i <= n; i++) dfs(i); for (int i = 0; i < q; i++) { cin >> a >> b; if (d[a][b] < 1e9) cout << d[a][b] << "\n"; else cout << "impossible\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...
#Verdict Execution timeMemoryGrader output
Fetching results...