Cod sursa(job #1593082)

Utilizator AcuasPopescu Nicolae-Aurelian Acuas Data 8 februarie 2016 11:51:54
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <vector>
#define NMAX 50005
using namespace std;
vector<int> v[NMAX];
vector<int> h;
int viz[NMAX],t,n,m;
void DFS(int x){
    if(viz[x]==0){
        viz[x]=++t;
        for(int parcurg=0;parcurg<v[x].size();parcurg++)
                DFS(v[x][parcurg]);
        h.push_back(x);
    }
}
void citire(){
    scanf("%d %d\n",&n,&m);
    int i,j,k;
    for(k=m;k>=1;k--){
        scanf("%d %d",&i,&j);
        v[i].push_back(j);
    }
}
int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    citire();
    for(int i=1;i<=n;i++)
        if(viz[i]==0)
            DFS(i);
    for(int parcurg=h.size()-1;parcurg>=0;parcurg--)
        printf("%d ",h[parcurg]);
    return 0;
}