Cod sursa(job #3135450)

Utilizator sebuxSebastian sebux Data 3 iunie 2023 12:11:38
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
#define optim ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define ll long long
#define ull unsigned long long
#define ld long double
#define pb push_back
#define let auto
#define popcount __builtin_popcount
#define ctzll __builtin_ctzll
#define clzll __builtin_clzll

using namespace std;
string filename = "sortaret";
ifstream fin(filename + ".in");
ofstream fout(filename + ".out");

const int sze = 5e5;
vector<int> G[sze + 1];
int F[sze + 1];

int main()
{
    queue<int> q;
    int n, m, a, b;
    fin>>n>>m;
    while(m--){
        fin>>a>>b;
        G[a].push_back(b);
        ++F[b];
    }
    for(int i = 1;i<=n;++i) {
        if(F[i] == 0) q.push(i);
    }
    while(!q.empty()){
        int t = q.front();
        q.pop();
        fout<<t<<' ';
        for(int i : G[t]){
            F[i]--;
            if(F[i] == 0) q.push(i);
        }
    }




    return 0;
}