Cod sursa(job #1994296)

Utilizator victoreVictor Popa victore Data 24 iunie 2017 16:12:50
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<cstdio>
#include<vector>

using namespace std;

const int nmax=50005;

vector<int>g[nmax];

int postordine[nmax],n,m,cnt;
bool viz[nmax];

inline void dfs(int node)
{
    int i;
    viz[node]=1;
    for(i=0;i<g[node].size();++i)
        if(!viz[g[node][i]])
            dfs(g[node][i]);
    postordine[++cnt]=node;
}

int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    int x,y,i;
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        g[x].push_back(y);
    }
    for(i=1;i<=n;++i)
        if(!viz[i])
            dfs(i);
    for(i=n;i;--i)
        printf("%d ",postordine[i]);
}