Cod sursa(job #1688881)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 13 aprilie 2016 19:40:37
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <cstdio>
#include <vector>
#define MAXN 50050

using namespace std;

vector<int> graf[MAXN], sol;
int n, m, viz[MAXN];

void citire()
{
	int x, y;
	scanf("%d %d", &n, &m);
    for (int i = 1; i <= m; i++) {
		scanf("%d %d", &x, &y);
        graf[x].push_back(y);
    }
}

void topologic(int nod)
{
	viz[nod] = 1;
	for (auto y : graf[nod])
		if (!viz[y])
			topologic(y);
    sol.push_back(nod);
}

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

	citire();
	for (int i = 1; i <= n; i++)
		if (!viz[i])
			topologic(1);
	for (int i = sol.size() - 1; i >= 0; i--)
		printf("%d ", sol[i]);

    return 0;

}