Cod sursa(job #3349773)

Utilizator eric_dragosDragos Eric eric_dragos Data 2 aprilie 2026 14:48:29
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
const int N = 50005;
int n,m, deg[N];
vector<vector<int>> graf(N);
queue<int> q;
vector<int> l;
void citire(){
    fin >> n >> m;
    for(int i = 1,x,y; i <=m; i++){
        fin >> x >> y;
        graf[x].push_back(y);
        deg[y]++;
    }
}
void sortaret(){
    l.clear();
    for(int i = 1; i<=n; i++){
        if(deg[i] == 0) q.push(i);
    }
    while(!q.empty()){
        int nod = q.front();
        q.pop();
        l.push_back(nod);
        for(int vecin : graf[nod]){
            deg[vecin]--;
            if(deg[vecin] == 0){
                q.push(vecin);
            }
        }
    }
}


int main(){
    citire();
    sortaret();
    for(auto it : l) fout << it << ' '; 

    return 0;
}