Cod sursa(job #1207489)

Utilizator nicol.bolasNicol Bolas nicol.bolas Data 13 iulie 2014 10:39:51
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<cstdio>
#include<vector>
using namespace std;
#define NMAX 50005
vector <int> v[NMAX],V;
vector <int>::reverse_iterator it;
int n,m,x,y,a[NMAX],viz[NMAX];
void dfs(int s)
{
    int i;
    viz[s]=1;
    for (i=0;i<v[s].size();++i)
        if (!viz[v[s][i]])
            dfs(v[s][i]);
    V.push_back(s);
}
int main()
{
    int i;
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (i=1;i<=m;++i)
    {
        scanf("%d%d",&x,&y);
        v[x].push_back(y);
        a[y]=1;
    }
    for (i=1;i<=n;++i)
        if (!a[i])
            dfs(i);
    for (it=V.rbegin();it!=V.rend();++it)
        printf("%d ",*it);
    printf("\n");
    return 0;
}