Cod sursa(job #3300465)

Utilizator ValiAntonieAntonie Valentin ValiAntonie Data 16 iunie 2025 12:19:46
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

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


int n,m,a,b, mark[50005], degree[50005];
vector <int> v[50005];
queue <int> Q2;
queue <int> Q;

void BFS(){
    while(!Q.empty()){
        int nod = Q.front();
        Q.pop();
        for (int i = 0; i < v[nod].size(); i++){
            if(!mark[v[nod][i]]){
                mark[v[nod][i]] = 1;
                Q.push(v[nod][i]);
                degree[v[nod][i]]--;
                if(!degree[v[nod][i]])
                    Q2.push(v[nod][i]);
            }
        }
    }
}


int main()
{
fin>>n>>m;
for (int i = 1; i <= m; i++){
    fin>>a>>b;
    v[a].push_back(b);
    degree[b]++;
}
for (int j = 1; j <= n; j++){
    if(!degree[j]){
        mark[j] = 1;
        Q.push(j);
        Q2.push(j);
    }
}
BFS();
while(!Q2.empty()){
    fout << Q2.front() << " ";
    Q2.pop();
}
    return 0;
}