제출 #967183

#제출 시각아이디문제언어결과실행 시간메모리
967183vladiliusEvent Hopping (BOI22_events)C++17
10 / 100
1579 ms128600 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); } } } vector<vector<int>> ans(n + 1, vector<int>(n + 1, inf)); function<void(int)> fill = [&](int x){ ans[x][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[x][i] > d){ ans[x][i] = d; pq.push({d, i}); } } } }; for (int i = 1; i <= n; i++) fill(i); while (q--){ int s, f; cin>>s>>f; int out = ans[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...