Cod sursa(job #2531810)

Utilizator Nita_CristianNita Cristian Nita_Cristian Data 26 ianuarie 2020 19:05:18
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

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

vector<int>l[500001];
bitset<500001>bifa;
int n, m, i, j, suma[500001], pas;
queue<int>q;
void topSort()
{
    while(pas)
    {
        for(int i = 1; i <= n; i++)
        {
            if(!suma[i] && !bifa[i])
            {
                fout << i << ' ';
                pas--;
                bifa[i] = 1;
                q.push(i);
            }
        }
        while(!q.empty())
        {
            int i = q.front();
            for(const int it : l[i])
                    suma[it]--;
            q.pop();
        }
    }
}
int main()
{
    fin >> n >> m;
    pas = n;
    for(int i = 1; i <= m; i++)
    {
        int x, y;
        fin >> x >> y;
        l[x].push_back(y);
        suma[y]++;
    }
    topSort();
    return 0;
}