Cod sursa(job #2418036)

Utilizator isa_tudor_andreiAndrei Tudor isa_tudor_andrei Data 3 mai 2019 10:40:52
Problema Sortare topologica Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>
#define NMAX 50000
#define MMAX 100000
#define ALB 0
#define NEGRU 2
#define GRI 1

using namespace std;

vector<int> l, G[NMAX];

int colour[NMAX];

void DFS( int x ) {
  colour[x] = GRI;
  for( auto it : G[x] )
    if( colour[it] == ALB )
      DFS(it);
  colour[x] = NEGRU;
  l.push_back(x);
}

int main() {
    ifstream fin("sortaret.in");
    ofstream fout("sortaret.out");
    int n, m, i, x, y;
    fin>>n>>m;
    for( i = 1; i <= m; i ++ ) {
      fin>>x>>y;
      G[x].push_back(y);
    }
    for( i = 1; i <= n; i ++ )
      if( colour[i] == ALB )
        DFS(i);
    reverse(l.begin(),l.end());
    for( auto it : l )
      fout<<it<<" ";
    return 0;
}