Cod sursa(job #3237378)

Utilizator Stefan_NicaStefan Nica Stefan_Nica Data 8 iulie 2024 18:03:36
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 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(int j = 0; j < v[i].size(); ++j){
            --grad[v[i][j]];
            if(!grad[v[i][j]])
                q.push_back(v[i][j]), --grad[v[i][j]];
        }
    }
    for(auto i : q)
        g<<i<<' ';
}