Submission #745775

#TimeUsernameProblemLanguageResultExecution timeMemory
745775vjudge1Event Hopping (BOI22_events)C++17
10 / 100
1565 ms524288 KiB
#include <bits/stdc++.h> using namespace std; #define InTheNameOfGod ios::sync_with_stdio(0);cin.tie(0); cout.tie(0); using ll = long long; const int maxN = 2e5 + 5; const int MOD = 1e9 + 7; const int INF = 1e9 + 7; vector<vector<int> > g; vector<vector<int> > dist; vector<pair<int, int>> pos; struct Event { int s,e, ind; }; bool operator<(Event &a, Event &b) { if(a.s == b.s) return a.e < b.e; return a.s < b.s; } int main() { /*#ifndef ONLINE_JUDGE freopen("../../input.txt", "r", stdin); freopen("../../output.txt", "w", stdout); #endif*/ InTheNameOfGod; int n,q; cin >> n >> q; g.resize(n+1); dist.resize(n+1, vector<int>(n+1, -1)); vector<Event > v; for(int i = 0; i < n; i++) { int x,y; cin >> x >> y; v.push_back({x, y, i+1}); } for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { if(i == j) continue; if(v[i].e >= v[j].s && v[i].e <= v[j].e) { g[i+1].push_back(j+1); } } } for(int i = 1; i <= n; i++) { queue<int> q; q.push(i); dist[i][i] = 0; while(!q.empty()) { int cur = q.front(); q.pop(); for(int sz : g[cur]) { if(dist[i][sz] != -1) continue; dist[i][sz] = dist[i][cur] + 1; q.push(sz); } } } while(q--) { int x,y; cin >> x >> y; if(dist[x][y] == -1) cout << "impossible\n"; else cout << dist[x][y] << "\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...