Cod sursa(job #240827)

Utilizator firewizardLucian Dobre firewizard Data 8 ianuarie 2009 19:37:52
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#include <vector>
#define pb push_back 
using namespace std;
vector<long> a[50001];
long n,m,i,j,x,y,l,v[50001],vz[50001];
void df(long x)
{
     long i;
     vz[x]=1;
     for (i=0;i<a[x].size();++i)
         if(!vz[a[x][i]])df(a[x][i]);
     v[++l]=x;
}
int main()
{
    freopen ("sortaret.in","r",stdin);
    freopen ("sortaret.out","w",stdout);
    scanf("%ld %ld",&n,&m);
    for (i=1;i<=m;++i){
        scanf("%ld %ld",&x,&y);
        a[x].pb(y);
        }
    for (i=1;i<=n;++i)
        if(!vz[i])df(i);
    for(i=l;i>=1;--i)printf("%ld ",v[i]);
    return 0;
}