Pagini recente » Cod sursa (job #319698) | Cod sursa (job #777634) | Cod sursa (job #2972698) | Monitorul de evaluare | Cod sursa (job #293976)
Cod sursa(job #293976)
#include <stdio.h>
const long NMAX=50010;
const long MMAX=100010;
long n, m, d[NMAX], ext[NMAX], x[MMAX], y[MMAX], i, *a[NMAX], zero[NMAX], sol[NMAX], cont, nod, p, u;
int main()
{
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
scanf("%ld%ld", &n, &m);
for (i=0; i<m; i++)
{
scanf("%ld%ld", &x[i], &y[i]);
d[x[i]]++;
ext[y[i]]++;
}//for i
for (i=1; i<=n; i++)
{
a[i]=new long[d[i]+1];
a[i][0]=0;
}//for i
for (i=0; i<m; i++)
a[x[i]][++a[x[i]][0]]=y[i];
for (i=1; i<=n; i++)
if (!ext[i])
zero[u++]=i;
while (p<u)
{
nod=zero[p++];
sol[cont++]=nod;
for (i=1; i<=a[nod][0]; i++)
{
ext[a[nod][i]]--;
if (ext[a[nod][i]]==0)
zero[u++]=a[nod][i];
}//for i
}//while
for (i=0; i<cont; i++)
printf("%ld ", sol[i]);
return 0;
}//main