Submission #745875

#TimeUsernameProblemLanguageResultExecution timeMemory
745875vjudge1Event Hopping (BOI22_events)C++14
10 / 100
1587 ms31404 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main(){ int n, q; cin >> n >> q; vector<pair<int, int> > inter(n); for (int i = 0; i < n; i++){ cin >> inter[i].first >> inter[i].second; } if (n > 1000){ set<pair<pair<int, int>, int> > s; for (int i = 0; i < n; i++){ s.insert(make_pair(inter[i], i)); } vector<ll> tav(n, -1); for (ll i = 0; i < n; i++){ if (tav[i] != -1) continue; queue<ll> q; q.push(i); tav[i] = i*10000000; while(!q.empty()){ ll pos = q.front(); q.pop(); if (s.lower_bound(make_pair(make_pair(inter[pos].second, inter[pos].second), -1)) == s.end()) continue; ll nextPos = s.lower_bound(make_pair(make_pair(inter[pos].second, inter[pos].second), -1)) -> second; if (pos != n - 1 && inter[pos].second <= inter[nextPos].second && inter[pos].second >= inter[nextPos].second){ tav[nextPos] = tav[pos] + 1; q.push(nextPos); } } } for (int i = 0; i < q; i++){ int a, b; cin >> a >> b; a--, b--; if (tav[b] - tav[a] < 0 || tav[b] - tav[a] > 999999){ cout << "impossible" << endl; } else cout << tav[b] - tav[a] << endl; } } vector<vector<int> > graph(n); for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ if (i == j) continue; if (inter[i].second <= inter[j].second && inter[i].second >= inter[j].first){ graph[i].push_back(j); } } } // for (int i = 0; i < n; i++){ // for (int x : graph[i]) cout << x << " "; // cout << endl; // } for (int i = 0; i < q; i++){ int s, e; cin >> s >> e; s--, e--; queue<int> q; q.push(s); vector<int> tav(n, -1); tav [s] = 0; while(!q.empty()){ int pos = q.front(); q.pop(); for (int x : graph[pos]){ if (tav[x] == -1){ tav[x] = tav[pos] + 1; q.push(x); } } } if (tav[e] == -1) { cout << "impossible" << endl; } else cout << tav[e] << endl; } return 0; } /* 5 2 1 3 2 4 4 7 7 9 3 7 1 4 3 2 */
#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...