Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <algorithm>
- #include <iostream>
- #include <vector>
- #include <set>
- using namespace std;
- int n,m,a,b,tab[1000006];
- vector <int> v[1000006];
- vector <int> naj;
- set <pair<int,int > > q;
- set <pair <int,int> >::iterator s;
- int main()
- {
- cin>>n>>m;
- for(int i=0;m>i;i++)
- {
- cin>>a>>b;
- tab[b]++;
- v[a].push_back(b);
- }
- for(int i=0;n>i;i++)
- {
- q.insert({tab[i],i});
- }
- while(q.empty()==0)
- {
- s=q.begin();
- if((*s).first!=0)
- {
- cout<<-1;
- return 0;
- }
- naj.push_back((*s).second);
- for(int j=0;v[(*s).second].size()>j;j++)
- {
- q.erase({tab[v[(*s).second][j]],v[(*s).second][j]});
- tab[v[(*s).second][j]]-=1;
- q.insert({tab[v[(*s).second][j]],v[(*s).second][j]});
- }
- q.erase(s);
- }
- for(int i=0;naj.size()>i;i++)
- cout<<naj[i]<<" ";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement