Cod sursa(job #1025994)

Utilizator SapientiaCHIRILA ADRIAN Sapientia Data 10 noiembrie 2013 21:20:50
Problema Sortare topologica Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <cstdio>
#define Nmax 2000
using namespace std;
int a[Nmax][Nmax];
int post[Nmax];
int nr=0,j,n;
bool viz[Nmax];
void reading(int &n)
{
    int k,m;
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    scanf("%d %d",&n,&m);
    for(k=1;k<=m;++k)
    {
        int x,y;
        scanf("%d %d",&x,&y);
        ++a[x][0];a[x][a[x][0]]=y;
    }
}
void dfs(int x)
{
    int i;
    viz[x]=1;
    for(i=1;i<=a[x][0];++i)
       if (!viz[a[x][i]]) dfs(a[x][i]);
       post[++nr]=x;

}
int main()
{
    reading(n);
    for(j=1;j<=n;++j)
    if (!viz[j]) dfs(j);
    for(j=n;j>0;--j)
     cout<<post[j]<<" ";
    return 0;
}