Submission #1189106

#TimeUsernameProblemLanguageResultExecution timeMemory
1189106user149Event Hopping (BOI22_events)C++20
0 / 100
1595 ms4076 KiB
#include<bits/stdc++.h>
using namespace std;

int s[100005];
int e[100005];

int in_deg[100005];
vector<int> adjlist[100005];

int dist[1005];

int main(){
    int N,Q;
    cin>>N>>Q;
    for(int i=1;i<=N;i++) cin>>s[i]>>e[i];
    for(int i=1;i<=N;i++){
        for(int j=1;j<=N;j++){
            if(s[j]<=e[i] && e[i]<e[j]){
                in_deg[j]=1;
                adjlist[i].push_back(j);
            }
        }
    }
    vector<int> topsort;
    for(int i=1;i<=N;i++) if(in_deg[i]==0) topsort.push_back(i);
    for(int i=0;i<=(int)topsort.size()-1;i++){
        int node=topsort[i];
        for(int j:adjlist[node]){
            in_deg[j]--;
            if(in_deg[j]==0) topsort.push_back(j);
        }
    }

    for(int i=1;i<=Q;i++){
        fill(dist,dist+1005,1e9);
        int a,b;
        cin>>a>>b;
        dist[a]=0;

        for(int node:topsort){
            for(int child:adjlist[node]){
                dist[child]=min(dist[child],dist[node]+1);
            }
        }
        
        if(dist[b]<1e9) cout<<dist[b]<<'\n';
        else cout<<"impossible\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...