Cod sursa(job #729968)

Utilizator RengelBotocan Bogdan Rengel Data 31 martie 2012 19:01:00
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<cstdio>
#include<vector>
#include<algorithm>

#define NMAX 50005

std :: vector <int> A[NMAX];
int N,M;
int Gr[NMAX],viz[NMAX];

void read(){

    scanf("%d%d",&N,&M);

    int x,y;
    for(int i=1;i<=M;i++){
        scanf("%d%d",&x,&y);
        A[x].push_back(y);
        Gr[y]++;
    }

}

void DFS(int x){

    printf("%d ",x);
    viz[x]++;
    for(unsigned int i=0; i<A[x].size(); i++){
        Gr[A[x][i]]--;
        if(!Gr[A[x][i]] && !viz[A[x][i]]) DFS(A[x][i]);
    }

}

int main(){

    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);

    read();

    for(int i=1;i<=N;i++)
        if(!Gr[i] && !viz[i])
            DFS(i);

}