Pagini recente » Istoria paginii runda/nstr | Clasament laborator9d13nov | Istoria paginii preoni-2008/clasament/runda-3/5-8 | Cod sursa (job #185619) | Cod sursa (job #164443)
Cod sursa(job #164443)
#include <iostream>
#include <queue>
using namespace std;
#define FIN "sortaret.in"
#define FOUT "sortaret.out"
#define MAXN 50001
int N[MAXN];
queue <int> Q;
struct point {int v; point *l;} *G[MAXN];
int main()
{
int n,m,i,x,y;
point *p;
freopen(FIN , "r" , stdin);
scanf("%d %d" , &n , &m);
while (m--)
{
scanf ("%d %d" , &x , &y );
N[y]++; p = new point; p->v=y;
p->l=G[x]; G[x]=p;
}
fclose(stdin);
freopen (FOUT , "w" , stdout);
for ( i=0 ; i<n ; )
if (!N[++i]) Q.push(i);
while (!Q.empty())
{
printf ( "%d " , Q.front() );
for ( p=G[Q.front()] ; p ; p=p->l )
if (!--N[p->v]) Q.push(p->v);
Q.pop();
}
fclose(stdout);
return 0;
}