Cod sursa(job #2809534)

Utilizator sandifx68Fazakas Alexandru sandifx68 Data 27 noiembrie 2021 10:28:23
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n,m,s,v[100005],d[100005];

vector <int>graf[100005];
queue <int>q;

void citire(){
    f>>n>>m;
    int x,y;
    for(int i=1;i<=m;i++){
        f>>x>>y;
        d[y]++;
        if(x!=y)
            graf[x].push_back(y);
    }
}

void sortare(){
    while(!q.empty()){
        g<<q.front()<<" ";
        for(auto&a:graf[q.front()]){
            if(d[a]==1){
                q.push(a);
            } else d[a]--;
        }
        q.pop();
    }
}

int main()
{
    citire();
    for(int i=1;i<=n;i++)
        if(!d[i]){
            q.push(i);
            v[i]=1;
        }
    sortare();
}