Submission #720721

#TimeUsernameProblemLanguageResultExecution timeMemory
720721NeroZeinEvent Hopping (BOI22_events)C++17
10 / 100
1580 ms177208 KiB
#include <bits/stdc++.h> using namespace std; const int Log = 18; const int N = 5003; int dis[N][N]; int l[N], r[N]; vector<int> g[N]; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, q; cin >> n >> q; for (int i = 1; i <= n; ++i) { cin >> l[i] >> r[i]; } auto intersect = [&](int x, int i, int j) { return x >= i && x <= j; }; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { if (intersect(r[i], l[j], r[j])) { g[i].push_back(j); } } } memset(dis, -1, sizeof dis); auto Bfs = [&](int src) { queue<int> que; que.push(src); dis[src][src] = 0; while (!que.empty()) { int v = que.front(); que.pop(); for (int u : g[v]) { if (dis[src][u] == -1) { dis[src][u] = dis[src][v] + 1; que.push(u); } } } }; for (int i = 1; i <= n; ++i) { Bfs(i); // cout << "v : " << i << '\n'; // for (int j = 1; j <= n; ++j) { // cout << dis[i][j] << ' '; // } // cout << '\n'; } while (q--) { int u, v; cin >> u >> v; if (dis[u][v] == -1) { cout << "impossible" << '\n'; } else { cout << dis[u][v] << '\n'; } } return 0; }
#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...