Cod sursa(job #2653517)

Utilizator AndreibatmanAndrei Croitoriu Andreibatman Data 28 septembrie 2020 12:54:47
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>

using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

int n,m,i,j,fr[50010],q[50010],x,y;
vector <int> v[50010];
vector <int> :: iterator it;

int main()
{
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        fr[y]++;
        v[x].push_back(y);
    }
    for(i=1;i<=n;i++)
        if(fr[i]==0)
            q[++q[0]]=i;
    for(i=1;i<=n;i++)
    {
        x=q[i];
        for(it=v[x].begin();it!=v[x].end();++it)
        {
            fr[*it]--;
            if(!fr[*it])
                q[++q[0]]=*it;
        }
    }
    for(i=1;i<=n;i++)
        fout<<q[i]<<" ";
    return 0;
}