Cod sursa(job #2695486)

Utilizator Dorin07Cuibus Dorin Iosif Dorin07 Data 13 ianuarie 2021 12:45:14
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>
#define NMAX 50005
using namespace std;

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

int n, m;
vector < int > visited[NMAX];
int x, y, grad[NMAX];
queue < int > q;

void read(){
    f >> n >> m;
    for(int i = 1; i <= m; ++i){
        f >> x >> y;
        visited[x].push_back(y);
        ++grad[y];
    }
}

void alg(){
    for(int i = 1; i <= n; ++i){
        if(grad[i] == 0)
            q.push(i);
    }
    while(!q.empty()){
        int nod = q.front();
        g << nod << ' ';
        q.pop();
        for(int i = 0; i < visited[nod].size(); ++i){
            int vis = visited[nod][i];
            --grad[vis];
            if(grad[vis] == 0)
                q.push(vis);
        }
    }
}

int main(){
    read();
    alg();
    return 0;
}