Pagini recente » Cod sursa (job #2831085) | Cod sursa (job #724955) | Cod sursa (job #2503779) | Cod sursa (job #2754636) | Cod sursa (job #1097394)
#include<stdio.h>
#include<vector>
#include<queue>
int n,k,x,y,i,tata;
int pred[50011];
using namespace std;
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
vector<int>suc[50011];
queue<int>q;
scanf("%d%d",&n,&k);
for(i=1;i<=k;++i)
{
scanf("%d%d",&x,&y);
++pred[y];
suc[x].push_back(y);
}
for(i=1;i<=n;++i)
if(pred[i]!=0)
q.push(i);
for(i=1;i<=n;++i)
if(pred[i]==0)
q.push(i);
while(q.empty()==0)
{
tata=q.front();
while(suc[tata].size()!=0)
{
if(pred[suc[tata].back()]!=0)
--pred[suc[tata].back()];
if(pred[suc[tata].back()]==0)
q.push(suc[tata].back());
suc[tata].pop_back();
}
if(pred[tata]==0)
printf("%d ",tata);
q.pop();
}
return 0;
}