Cod sursa(job #953101)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 24 mai 2013 20:53:33
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<cstdio>
#include<vector>
#define nx 50007
using namespace std;
int n,m,i,k,x,y,viz[nx],d[nx];
vector<int>v[nx];

void dfs(int x)
{
    int j;
    for(j=0;j<v[x].size();j++)
    if(viz[v[x][j]]==0)printf("%d ",v[x][j]),viz[v[x][j]]=1,dfs(v[x][j]);
}

int main()
{
    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);
        d[y]++;
    }
    x=0;
    for(i=n;i>=1;i--)
    if(d[i]==0)if(x==0)x=i;
    else printf("%d ",x),x=i;
    printf("%d ",x);
    viz[x]=1;
    dfs(x);
    return 0;
}