Cod sursa(job #1200604)

Utilizator timicsIoana Tamas timics Data 22 iunie 2014 23:52:43
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#include<vector>
using namespace std;
vector<int> m[50010],sol;
bool viz[50010];
int N,M,x,y;

void dfs(int x) {
    viz[x]=1;
    for(int i=0;i<m[x].size();++i) {
        if(!viz[m[x][i]]) {
            dfs(m[x][i]);
        }
    }
    sol.push_back(x);
}

int main() {
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","r",stdin);
    scanf("%d%d",&N,&M);
    for(int i=1;i<=M;++i) {
        scanf("%d%d",&x,&y);
        m[x].push_back(y);
    }

    for(int i=1;i<=N;++i) {
        if(!viz[i]) {
            dfs(i);
        }
    }
    for(int i=sol.size()-1;i>=0;--i) {
        printf("%d ",sol[i]);
    }
}