Cod sursa(job #2909008)

Utilizator dgivanDan Grigore Ivan dgivan Data 7 iunie 2022 20:55:25
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include<iostream>
#include<set>
#include<algorithm>
#include <vector>
#include <fstream>
#include <cstring>
#include <map>
#include <math.h>
#include <queue>

using namespace std;

int n, m;
vector<int> v[55000];
vector<int> grade(55000);

int main () {

    ifstream cin ("sortaret.in");
    ofstream cout ("sortaret.out");
    cin >> n >> m;

    for (int i = 1; i<=m; i++){
        int a, b;
        cin >> a >> b;
        v[a].push_back(b);
        grade[b]++;
    }

   queue<int> q;
    for (int i = 1; i<=n; i++){
        if (grade[i]==0){
            q.push(i);
        }
    }
    while (!q.empty()){
        int u = q.front();
        q.pop();
        for (int i = 0; i<v[u].size(); i++){
            grade[v[u][i]]--;
            if (grade[v[u][i]] == 0){
                q.push(v[u][i]);
            }
        }
        cout << u << " ";
    }
}