Cod sursa(job #2168450)

Utilizator andreiutu111Noroc Andrei Mihail andreiutu111 Data 14 martie 2018 11:02:57
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int N,M,x,y,gr[50001],rez[50001];
vector <int> G[50001];
int main()
{
    f>>N>>M;
    while(M--){
        f>>x>>y,G[x].push_back(y),++gr[y];
    }
    for(int i=1;i<=N;++i)
        if(gr[i]==0)
            rez[++rez[0]]=i;
    vector<int>::iterator it;
    for(int i=1;i<=N;++i){
        x=rez[i];
        for(it=G[x].begin();it!=G[x].end();++it){
            --gr[*it];
            if(gr[*it]==0)rez[++rez[0]]=*it;
        }
    }
    for(int i=1;i<=N;++i)g<<rez[i]<<' ';
    return 0;
}