Cod sursa(job #1579300)

Utilizator PTAdrian64Pop-Tifrea Adrian PTAdrian64 Data 24 ianuarie 2016 16:44:09
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#define nmax 50005
#include <vector>
#include <queue>

using namespace std;

int N,M;
vector <int> G[nmax];
int d[nmax];
queue <int> Q;

int main(){
  freopen("sortaret.in","r",stdin);
  freopen("sortaret.out","w",stdout);
  
  scanf("%d %d ",&N,&M);
  int x,y;
  while(M--){
    scanf("%d %d ",&x,&y);
    G[x].push_back(y);
    d[y]++;
  }

  for(x = 1;x <= N;++x)if(d[x] == 0)Q.push(x);
  while(!Q.empty()){
    
     x = Q.front();
     Q.pop();
     printf("%d ",x);
     for(vector <int> :: iterator it = G[x].begin();it != G[x].end();++it){
        d[*it]--;
        if(d[*it] == 0)Q.push(*it);
     }  

  }
  
  printf("\n");

  return 0;
}