Cod sursa(job #1785714)

Utilizator MithrilBratu Andrei Mithril Data 21 octombrie 2016 20:32:11
Problema Sortare topologica Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n,m,x,y;
list<int> adj[50000+1];
vector<bool> visited;
stack<int> S;

void sortHelper(int x){
    for(list<int>::iterator it=adj[x].begin();it!=adj[x].end();it++)
        sortHelper(*it);
    visited[x]=true;
    S.push(x);
}

int main()
{
    fin>>n>>m;
    visited.resize(n+1);
    for(int i=0;i<m;i+=1){
        fin>>x>>y;
        adj[x].push_back(y);
    }
    for(int i=1;i<=n;i+=1)if(!visited[i])sortHelper(i);
    while(!S.empty()){
        fout<<S.top()<<' ';
        S.pop();
    }
    return 0;
}