Cod sursa(job #3280269)

Utilizator pacelaaaCiurea Pavel pacelaaa Data 25 februarie 2025 22:06:59
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ( "sortaret.in" );
ofstream fout ( "sortaret.out" );

#define PB push_back
#define PF push_front
#define cin fin
#define cout fout

const int Nmax = 5e4;

vector<int> adj[Nmax + 1];
bool processed[Nmax + 1], afisat[Nmax + 1];
list<int> l;

void dfs ( int nod ) {
  int i, nod2;

  for ( i = 0; i < adj[nod].size(); i ++ ) {
    nod2 = adj[nod][i];
    if ( !processed[nod2] ) {
      processed[nod2] = true;
      dfs( nod2 );
    }
  }
  if ( !afisat[nod] ) {
    l.PB( nod );
    afisat[nod] = true;
  }

}

int main()
{
    int n, m, i, nod1, nod2;
    cin >> n >> m;

    for ( i = 1; i <= n; i ++ )
      processed[i] = false;
    for ( i = 0; i < m; i ++ ) {
      cin >> nod1 >> nod2;
      adj[nod1].PB( nod2 );
    }
    for ( i = 1; i <=n; i ++ )
      dfs( i );
    while ( !l.empty() ) {
      cout << l.back() << " ";
      l.pop_back();
    }

    return 0;
}