Cod sursa(job #593054)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 31 mai 2011 23:59:37
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>
#include <vector>

using namespace std;

vector <int> g[50001];
int vis[50001],w[50001],c,n;

void dfs(int x)
{
    unsigned int i;
    for (i=0;i<g[x].size();++i)
    {
        dfs(g[x][i]);
        vis[g[x][i]]=1;
    }
    ++c;
    w[n-c+1]=x;
}

int main()
{
    int m,i,x,y;
    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);
        g[x].push_back(y);
    }
    for (i=1;i<=n;++i)
        if (!vis[i])
        {
            vis[i]=1;
            dfs(i);
        }
    for (i=1;i<=n;++i)
        printf("%d ",w[i]);
    printf("\n");
    return 0;
}