제출 #714310

#제출 시각아이디문제언어결과실행 시간메모리
714310vjudge1Event Hopping (BOI22_events)C++17
10 / 100
41 ms8276 KiB
#include <iostream> #include <vector> #include <queue> using namespace std; #define MAX 1001 int n, q; pair<int, int>events[MAX]; bool check[MAX]; int dists[MAX][MAX]; vector<int>g[MAX]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> q; for(int i = 1;i <= n;++i){ cin >> events[i].first >> events[i].second; } for(int i = 1;i <= n;++i){ for(int j = 1;j <= n;++j){ if(i == j)continue; if(events[i].second >= events[j].first && events[i].second <= events[j].second){ g[i].push_back(j); } } } // for(int i = 1;i <= n;++i){ // cout << i << ": "; // for(int j : g[i]){ // cout << j << " "; // } // cout << '\n'; // } for(int i = 1;i <= n;++i){ for(int j = 1;j <= n;++j){ dists[i][j] = -1; } } for(int i = 1;i <= n;++i)check[i] = 0; for(int i = 0;i < q;++i){ int u, v; cin >> u >> v; if(dists[u][v] != -1)cout << dists[u][v] << '\n'; else if(dists[u][v] == -1 && check[u])cout << "impossible\n"; else{ queue<int>que; que.push(u); check[u] = 1; dists[u][u] = 0; while(!que.empty()){ int cur = que.front(); que.pop(); for(int vv : g[cur]){ if(dists[u][vv] == -1){ dists[u][vv] = dists[u][cur] + 1; que.push(vv); } } } if(dists[u][v] == -1)cout << "impossible\n"; else cout << dists[u][v] << '\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...