Cod sursa(job #2354154)

Utilizator cyg_TheoPruteanu Theodor cyg_Theo Data 24 februarie 2019 22:22:34
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <vector>

using namespace std;

const int NMAX=50001;

vector <int> G[NMAX];
int n,m;

int viz[NMAX];
int sol[NMAX];
int cnt=0;

void dfs(int u){
    viz[u]=1;
    for(int i=0;i<G[u].size();++i){
        int v=G[u][i];
        if(viz[v]==0)
            dfs(v);
    }
    sol[++cnt]=u;
}

int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    scanf("%d%d",&n,&m);
    int u,v;
    for(int i=1;i<=m;++i){
        scanf("%d%d",&u,&v);
        G[u].push_back(v);
    }
    for(int i=1;i<=n;++i)
        if(viz[i]==0)
            dfs(i);
    for(int i=n;i>=1;--i)
        printf("%d ",sol[i]);
    return 0;
}