Cod sursa(job #500561)

Utilizator adalLica Adela adal Data 12 noiembrie 2010 15:22:11
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <vector>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define pb push_back

using namespace std;
vector< int > L[50005], C;
vector <int> :: iterator it;
int n, m, i, x, y ;
bool sel[50005];

void load(){
   scanf("%d %d\n", &n, &m);
   for (i=1; i<= m; i++){
   scanf("%d %d\n",&x, &y);
   L[x].pb(y);
  }
 return;
}
void dfs(int x){
   vector <int> :: iterator it;
   sel[x]=true;
   for(it=L[x].begin(); it!=L[x].end(); it++)
	    if (!sel[*it]) dfs(*it);
   C.pb(x);  
}

int main(){
 freopen("sortaret.in","r",stdin);
 freopen("sortaret.out","w",stdout);
 load();
 memset(sel, false, sizeof(sel));
 for (i=1;i<=n; i++)
	if (!sel[i]) dfs(i);
 reverse(C.begin(),C.end());
 for(it=C.begin(); it!=C.end(); it++)
   printf("%d ",*it);
printf("\n");
}