Cod sursa(job #3343275)

Utilizator divadddDavid Curca divaddd Data 26 februarie 2026 19:22:47
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 5e4+2;
int n,m,g[NMAX],p[NMAX];
vector<int> v[NMAX];

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

int main() {
  fin >> n >> m;
  for(int i = 1; i <= m; i++){
    int x, y;
    fin >> x >> y;
    g[y]++;
    v[x].push_back(y);
  }
  deque<int> dq;
  for(int i = 1; i <= n; i++){
    if(g[i] == 0){
      dq.push_front(i);
    }
  }
  int k = 0;
  while(!dq.empty()){
    int nod = dq.back();
    dq.pop_back();
    p[++k] = nod;
    for(int vecin: v[nod]){
      g[vecin]--;
      if(g[vecin] == 0){
        dq.push_front(vecin);
      }
    }
  }
  for(int i = 1; i <= n; i++){
    fout << p[i] << " ";
  }
  return 0;
}