Cod sursa(job #499363)

Utilizator IULIABRIGITABARTA IULIA-BRIGITA IULIABRIGITA Data 9 noiembrie 2010 18:11:42
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
#include<vector>
#include<stack>
 
using namespace std;
 
#define Mmax 100001
 
#define Nmax 50001

vector <int> G[Mmax];
 
stack <int> sol;

int N, M, val, viz[Nmax];
 
void DFS(int nod) {
    viz[nod]=1;
    vector<int> :: iterator it;
    for(it=G[nod].begin(); it!=G[nod].end(); it++)
       if(!viz[*it]) {
            viz[*it]=1;
           DFS(*it);
       }
   sol.push(nod);
}

int main() {
   freopen("sortaret.in","r",stdin);
   freopen("sortaret.out","w",stdout);
     
    int i, j;
    scanf("%d %d",&N,&M);
   while(M--) {
       scanf("%d %d",&i,&j);
        G[i].push_back(j);
    }
    
    for(i=1; i<=N; i++)
       if(!viz[i])
           DFS(i);
    
    for(; !sol.empty(); sol.pop())
        printf("%d ",sol.top());
    printf("\n");
     
    return 0;
}