Pagini recente » Cod sursa (job #2390103) | Cod sursa (job #565039) | Cod sursa (job #699325) | Cod sursa (job #2916758) | Cod sursa (job #630505)
Cod sursa(job #630505)
#include<cstdio>
#include<vector>
#include<stdlib.h>
#define maxn 50010
using namespace std;
vector < int > A[maxn];
int grad[maxn],Q[maxn];
int n,m;
void read()
{
freopen("sortaret.in","r",stdin);
int a,b;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d %d",&a,&b);
A[a].push_back(b);
grad[b]++;
}
}
void sortaret()
{
int x;
vector<int>::iterator it;
for(int i=1;i<=n;i++)
if(grad[i]==0) Q[++Q[0]]=i;
for(int i=1;i<=n;i++)
{
x=Q[i];
for(it=A[x].begin();it!=A[x].end();it++)
{
grad[*it]--;
if(grad[*it]==0) Q[++Q[0]]=*it;
}
}
}
void write()
{
freopen("sortaret.out","w",stdout);
for(int i=1;i<=n;i++)
printf("%d ",Q[i]);
}
int main()
{
read();
sortaret();
write();
return 0;
}