Cod sursa(job #3337172)

Utilizator D4R1U5Sava Darius D4R1U5 Data 26 ianuarie 2026 23:21:46
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("sortaret.in");
ofstream g("sortaret.out");

const int NMAX = 50005;

vector <int> G[NMAX];

int n,m;
int in_deg[NMAX];
vector <int> sol;

void sortareTopo(){
    queue <int> q;

    for (int i=1;i<=n;i++){
        if (in_deg[i]==0) q.push(i);
    }

    while (!q.empty()){
        int nod = q.front();
        q.pop();

        sol.push_back(nod);
        for (auto vecin : G[nod]){
            in_deg[vecin]--;
            if (in_deg[vecin]==0) q.push(vecin);
        }
    }
}

int main(){
    f>>n>>m;
    for (int i=1;i<=m;i++){
        int nod1, nod2;
        f>>nod1>>nod2;
        G[nod1].push_back(nod2);
        in_deg[nod2]++;
    }

    sortareTopo();

    for (auto elem : sol) g<<elem<<" ";
    return 0;
}