Submission #714299

#TimeUsernameProblemLanguageResultExecution timeMemory
714299vjudge1Event Hopping (BOI22_events)C++17
10 / 100
1588 ms30432 KiB
#include <bits/stdc++.h>

#define ll long long
#define pii pair<int, int>
#define oo 1e9

using namespace std;

vector<vector<int>> g;
vector<int> visited;
int bfs(int start, int target){
    queue<pii> q;
    q.push({start, 0});
    visited[start] = true;
    while(!q.empty()){
        int node = q.front().first;
        int d = q.front().second;
        q.pop();
        if(node == target) return d;
        for(int to:g[node]){
            if(visited[to]) continue;
            q.push({to, d + 1});
            visited[to] = true;
        }
    }
    return oo;
}

int main(){
    int n, q; cin >> n >> q;
    vector<pii> v(n + 1);
    for (int i = 1; i <= n; i++)
    {
        cin >> v[i].first >> v[i].second;
    }
    visited.resize(n + 1, 0);
    g.resize(n + 1);
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if(i == j) continue;
            if(v[i].second <= v[j].second && v[i].second >= v[j].first){
                g[i].emplace_back(j);
            }
        }
    }
    
    while(q--){
        fill(visited.begin(), visited.end(), 0);
        int u, v; cin >> u >> v;
        int ans = bfs(u, v);
        if(ans == oo){
            cout << "impossible\n";
        }
        else{
            cout << ans << '\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...