Cod sursa(job #1005572)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 5 octombrie 2013 11:57:17
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<cstdio>
#include<vector>
#define NMAX 50000+5
using namespace std;
int N,M;
bool viz[NMAX];
vector<int> postordine;
vector<int> V[NMAX];
void DFS(int x)
{
    vector<int>::iterator it;
    viz[x]=1;
    for(it=V[x].begin();it!=V[x].end();it++)
    {
        if(viz[*it]) continue;
        DFS(*it);
    }
    postordine.push_back(x);
}
int main()
{
    int a,b,i;
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    scanf("%d%d",&N,&M);
    for(;M;--M)
    {
        scanf("%d%d",&a,&b);
        V[a].push_back(b);
    }
    for(i=1;i<=N;i++)
        if(!viz[i]) DFS(i);
    for(vector<int>::reverse_iterator it=postordine.rbegin();it!=postordine.rend();it++) printf("%d ",*it);
    return 0;
}