Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- bool check[500001],keep[500001];
- int main(){
- int n,m,k,mx=0;
- scanf("%d %d %d",&n,&m,&k);
- vector <int> g[n+1];
- for(int i=1;i<=m;i++){
- int u,v;
- scanf("%d %d",&u,&v);
- g[u].push_back(v);
- }
- for(int i=1;i<=k;i++){
- int r;
- scanf("%d",&r);
- keep[r]=true;
- }
- for(int i=1;i<=n-1;i++){
- if(keep[i]==false ) {
- g[i].push_back(i+1);
- }
- }
- queue <int> q;
- q.push(1);
- check[1]=true;
- while(q.size()>0){
- int u;
- u=q.front();
- q.pop();
- if(u>mx) mx=u;
- for(auto v:g[u]){
- if(check[v]==false && v>u){
- check[v]=true;
- q.push(v);
- }
- }
- }
- if(mx==n) printf("1");
- else printf("0 %d",mx);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement