Submission #714239

#TimeUsernameProblemLanguageResultExecution timeMemory
714239vjudge1Event Hopping (BOI22_events)C++17
10 / 100
1582 ms130200 KiB
#include <iostream> #include <vector> #include <queue> using namespace std; int n, q; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> q; vector<int>g[n + 1]; pair<int, int>events[n + 1]; 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'; // } vector<pair<int, int>>queries; while(q--){ int u, v; cin >> u >> v; queries.push_back({u, v}); } vector<vector<int>>dists(n + 1, vector<int>(n + 1, -1)); bool check[n + 1]; for(int i = 1;i <= n;++i)check[i] = 0; for(pair<int, int>query: queries){ int u = query.first, v = query.second; 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...