Cod sursa(job #376877)

Utilizator ooctavTuchila Octavian ooctav Data 22 decembrie 2009 19:40:18
Problema Sortare topologica Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
// sortaret.cpp : Defines the entry point for the console application.
//

#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;

#define NMAX 50100

int grad[NMAX],viz[NMAX],N,M;
vector<int> g[NMAX];

void citire()
{
	int a,b;
	scanf("%d %d",&N,&M);
	for(int i=1;i<=M;i++)
	{
		scanf("%d %d",&a,&b);
		g[a].push_back(b);
		grad[b]++;
	}
}

void rezolvare()
{
	int a,b;
	scanf("%d %d",&N,&M);
	for(int i=1;i<=N;i++)
	{
		scanf("%d %d",&a,&b);
		g[a].push_back(b);
		grad[b]++;
	}
	for(int i=1;i<=N;i++)
		for(int j=1;j<=N;j++)
			if(!viz[j] && !grad[j])
			{
				viz[j]=1;
				printf("%d ",j);
				for(int k=0;k<g[j].size();k++)
					grad[g[j][k]]--;
				break;
			}
}

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

	citire();
	rezolvare();

	return 0;
}