제출 #967150

#제출 시각아이디문제언어결과실행 시간메모리
967150vladiliusEvent Hopping (BOI22_events)C++17
10 / 100
1581 ms30804 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int inf = numeric_limits<int> :: max(); using pii = pair<int, int>; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, q; cin>>n>>q; vector<int> l(n + 1), r(n + 1); for (int i = 1; i <= n; i++){ cin>>l[i]>>r[i]; } vector<int> g[n + 1]; for (int i = 1; i <= n; i++){ for (int j = 1; j <= n; j++){ if (i == j) continue; if (l[j] <= r[i] && r[i] <= r[j]){ g[i].push_back(j); } } } auto get = [&](int x, int y){ vector<int> ans(n + 1, inf); ans[x] = 0; priority_queue<pii, vector<pii>, less<pii>> pq; pq.push({0, x}); while (!pq.empty()){ auto [d, v] = pq.top(); pq.pop(); d++; for (int i: g[v]){ if (ans[i] > d){ ans[i] = d; pq.push({d, i}); } } } return ans[y]; }; while (q--){ int s, f; cin>>s>>f; int out = get(s, f); if (out == inf){ cout<<"impossible"<<"\n"; } else { cout<<out<<"\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...