Cod sursa(job #3303945)

Utilizator Grama2008Grama Andrei Teodor Grama2008 Data 19 iulie 2025 14:19:31
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

const int N=5e4+5;

vector<int> adj[N];

int indegree[N];

int main()
{
    freopen("sortaret.in", "r", stdin);
    freopen("sortaret.out", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,m;cin>>n>>m;
    for (int i=0;i<m;i++){
        int u,v;
        cin>>u>>v;
        adj[u].push_back(v);
        indegree[v]++;
    }
    queue<int> q;
    for (int i=1;i<=n;i++){
        if (indegree[i]==0){
            q.push(i);
        }
    }
    vector<int> ans;
    ans.reserve(n);
    while (!q.empty()){
        int node=q.front();q.pop();
        ans.push_back(node);
        for (auto x: adj[node]){
            indegree[x]--;
            if (indegree[x]==0){
                q.push(x);
            }
        }
    }
    for (auto x: ans){
        cout<<x<<' ';
    }
    return 0;
}