Cod sursa(job #1356144)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 23 februarie 2015 11:11:14
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
#include <vector>
#define NMAX 50023
FILE *fin, *fout;
int n, m, in[NMAX], a, b, d[NMAX], dr, st, sizen;
std::vector<int> adj[NMAX];
int main()
{
	fin = freopen("sortaret.in", "r", stdin);
	fout = freopen("sortaret.out", "w", stdout);
	scanf("%d %d", &n, &m);
	for(int i = 0; i< m; ++i)
	{
		scanf("%d %d", &a, &b);
		in[b]++;
		adj[a].push_back(b);
	}
	for(int i = 1; i<= n; i++) if(!in[i]) d[dr] = i, dr++;
	for(int i = 0; i< dr; ++i)
	{
		printf("%d ", d[i]);
		sizen = adj[d[i]].size();
		for(int j = 0; j< sizen; ++j)
		{
			in[adj[d[i]][j]]--;
			if(!in[adj[d[i]][j]]) d[dr]= adj[d[i]][j], dr++;
		}
	}
	fclose(fin);
	fclose(fout);
	return 0;
}