Advertisement
Guest User

das

a guest
Apr 20th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <vector>
  5. #include <set>
  6. using namespace std;
  7. int n,m,a,b,tab[1000006];
  8. vector <int> v[1000006];
  9. vector <int> naj;
  10. set <pair<int,int > > q;
  11. set <pair <int,int> >::iterator s;
  12. int main()
  13. {
  14. cin>>n>>m;
  15. for(int i=0;m>i;i++)
  16. {
  17.     cin>>a>>b;
  18.     tab[b]++;
  19.     v[a].push_back(b);
  20. }
  21. for(int i=0;n>i;i++)
  22. {
  23.     q.insert({tab[i],i});
  24. }
  25. while(q.empty()==0)
  26. {
  27.  
  28.     s=q.begin();
  29.    
  30.     if((*s).first!=0)
  31.     {
  32.         cout<<-1;
  33.         return 0;
  34.     }
  35.  
  36.     naj.push_back((*s).second);
  37.  
  38.     for(int j=0;v[(*s).second].size()>j;j++)
  39.     {
  40.  
  41.           q.erase({tab[v[(*s).second][j]],v[(*s).second][j]});
  42.         tab[v[(*s).second][j]]-=1;
  43.  
  44.  q.insert({tab[v[(*s).second][j]],v[(*s).second][j]});
  45.  
  46.  
  47.     }
  48.     q.erase(s);
  49. }
  50. for(int i=0;naj.size()>i;i++)
  51.     cout<<naj[i]<<" ";
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement