Cod sursa(job #384086)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 19 ianuarie 2010 09:10:40
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <vector>
using namespace std;

vector <int> A[5005];

int rang[5005], c[5005];
int x, y, i, j, n, m, p=1, u=0;

int main (){

	FILE * f = fopen ("sortaret.in", "r");
	FILE * g = fopen ("sortaret.out", "w");

	fscanf (f, "%d %d", &n, &m);
	for (i = 1 ; i <= m ; i++){
		fscanf (f, "%d %d", &x,&y);
		A[x].push_back(y);
		rang[y]++;
	}

	for (i = 1 ; i <= n ; i++)
		if (rang[i] == 0){
			c[++u] = i;
		}

	while (p<=u){

		for (j = 0 ; j < A[p].size() ; j++){
			rang[A[p][j]]--;
			if (rang[A[p][j]] == 0) c[++u] = A[p][j];
		}

		p++;

	}

	for (i = 1 ; i <= n ; i++)
		fscanf (g, "%d", c[i]);

	fclose(f);
	fclose(g);
	return 0;
}