Cod sursa(job #272253)

Utilizator varuvasiTofan Vasile varuvasi Data 6 martie 2009 18:10:56
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#include <vector>
#include <deque>
using namespace std;

#define maxn 50001

int n, m, v[maxn];
vector<int> L[maxn];
deque<int> D;

FILE *fin = fopen("sortaret.in", "rt"), *fout =fopen("sortaret.out", "wt");

void df(int nod)
{
	int i=0;
	
	v[nod]=1;
	for (i=0; i < L[nod].size(); i++)
		if (!v[L[nod][i]])
			df(L[nod][i]);
	D.push_front(nod);
}

int main()
{
	int i=0, a,b;

	fscanf(fin, "%d %d", &n, &m);

	for (i=1; i <= m; i++)
	{
		fscanf(fin, "%d %d", &a, &b);
		L[a].push_back(b);
	}
	
	for (i=1; i <= n; i++)
		if (!v[i]) df(i);
	
	for (i=0; i < D.size(); i++)
		fprintf(fout, "%d ", D[i]);

	fclose(fin), fclose(fout);

	return 0;
}