Cod sursa(job #2679692)

Utilizator AndreiCroitoruAndrei Croitoru AndreiCroitoru Data 1 decembrie 2020 11:48:13
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int n,m,k,ans[50001];
struct ura
{
    int cnt;
    vector <int> copil;
};
ura v[50001];


int main()
{
    int i,j,a,b;
    in>>n>>m;
    for(i=1;i<=m;i++)
    {
        in>>a>>b;
        v[a].copil.push_back(b);
        v[b].cnt++;
    }
    for(i=1;i<=n;i++)
    {
        if(v[i].cnt==0)
            ans[++k]=i;
    }
    for(i=1;i<=n;i++)
    {
        for(j=0;j<v[ans[i]].copil.size();j++)
        {
            v[v[ans[i]].copil[j]].cnt--;
            if(v[v[ans[i]].copil[j]].cnt==0)
            {
                ans[++k]=v[ans[i]].copil[j];
            }
        }
    }
    for(i=1;i<=n;i++)
    {
        out<<ans[i]<<" ";
    }
    return 0;
}