Cod sursa(job #1702483)

Utilizator ionutpop118Pop Ioan Cristian ionutpop118 Data 15 mai 2016 12:05:59
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;

vector <int> succ[50005];
queue <int> q;
int pred[50005];

int main()
{
    freopen("sortaret.in", "r", stdin);
    freopen("sortaret.out", "w", stdout);

    int n, k, a, b, urm, aux;
    scanf("%d %d", &n, &k);

    for (register int i = 1; i <= k; ++i)
    {
        scanf("%d %d", &a, &b);
        succ[a].push_back(b);
        ++pred[b];
    }

    for (register int i = 1; i <= n; ++i)
        if (pred[i] == 0)
            q.push(i);

    while (!q.empty())
    {
        aux = q.front();
        printf("%d ", aux);
        for (register int i = 0; i < succ[aux].size(); ++i)
        {
            urm = succ[aux][i];
            --pred[urm];
            if (pred[urm] == 0)
                q.push(urm);
        }
        q.pop();
    }
    return 0;
}