Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cstdio>
- #include<vector>
- #include<queue>
- using namespace std;
- vector<vector<int> >V;
- vector<bool>czy;
- vector<int>ile;
- priority_queue<int>Q;
- int n,m;
- int main()
- {
- scanf("%d%d",&n,&m);
- V.resize(n+1);
- czy.resize(n+1);
- ile.resize(n+1);
- for(int i=0;i<m;i++)
- {
- int a,b;
- scanf("%d%d",&a,&b);
- V[a].push_back(b);
- ile[b]++;
- }
- int wyp=n;
- vector<int>wyn;
- for(int i=1;i<=n;i++)
- {
- if(ile[i]==0)Q.push(i);
- }
- vector<int>Temp;
- while(!Q.empty())
- {
- wyn.push_back(Q.top());
- for(int i=0;i<V[Q.top()].size();i++)
- {
- int sasiad=V[Q.top()][i];
- if(ile[sasiad]>0)ile[sasiad]--;
- if(ile[sasiad]==0)Temp.push_back(sasiad);
- }
- Q.pop();
- for(int i=0;i<Temp.size();i++)
- {
- Q.push(Temp[i]);
- }
- Temp.clear();
- }
- if(wyn.size()==n)
- for(int i=0;i<wyn.size();i++)
- {
- printf("%d ",wyn[i]);
- }
- else
- {
- printf("NIE\n");
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment