Cod sursa(job #3237384)

Utilizator Stefan_NicaStefan Nica Stefan_Nica Data 8 iulie 2024 18:12:08
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>

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

int grad[50001], n, m;
bool viz[50001];
std::vector<int> v[50001], q;

void solve();
int main(){

    f>>n>>m;
    for(int i = 1, x, y; i <= m; ++i)
        f>>x>>y, v[x].push_back(y), 
        grad[y]++;
    
    solve();
    return 0;
}
void solve(){
    
    for(int i = 1; i <= n; ++i)
        if(!grad[i])
            q.push_back(i), --grad[i];
    for(int i = 0; i < n; ++i){
        for(auto j : v[q[i]]){
            --grad[j];
            if(!grad[j])
                q.push_back(j), --grad[j];
        }
    }
    for(auto i : q)
        g<<i<<' ';
}