Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. bool check[500001],keep[500001];
  4. int main(){
  5.  
  6. int n,m,k,mx=0;
  7. scanf("%d %d %d",&n,&m,&k);
  8. vector <int> g[n+1];
  9. for(int i=1;i<=m;i++){
  10. int u,v;
  11. scanf("%d %d",&u,&v);
  12. g[u].push_back(v);
  13. }
  14. for(int i=1;i<=k;i++){
  15. int r;
  16. scanf("%d",&r);
  17. keep[r]=true;
  18. }
  19. for(int i=1;i<=n-1;i++){
  20. if(keep[i]==false ) {
  21. g[i].push_back(i+1);
  22. }
  23. }
  24. queue <int> q;
  25. q.push(1);
  26. check[1]=true;
  27. while(q.size()>0){
  28. int u;
  29. u=q.front();
  30. q.pop();
  31. if(u>mx) mx=u;
  32. for(auto v:g[u]){
  33. if(check[v]==false && v>u){
  34. check[v]=true;
  35. q.push(v);
  36. }
  37. }
  38. }
  39.  
  40. if(mx==n) printf("1");
  41. else printf("0 %d",mx);
  42.  
  43. return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement