Cod sursa(job #505908)

Utilizator acelasi7Tudor Maxim acelasi7 Data 4 decembrie 2010 14:44:03
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#include<vector>
using namespace std;
#define nrd 50001
vector<int> V[nrd];
FILE *in=fopen("sortaret.in","r"),*out=fopen("sortaret.out","w");
bool viz[nrd];
int rez[nrd],k,n,m;
void dfs(int x)
{
	int sz=V[x].size();
	int i;
	/*rez[++k]=V[x].at(i);
	viz[V[x].at(i)]=true;*/
	rez[++k]=x;
	viz[x]=true;
	for(i=0;i<sz;++i)
	{
		if(!viz[V[x].at(i)])
		{
			dfs(V[x].at(i));
		}
	}
}
int main()
{
	int i,x,y;
	fscanf(in,"%d %d",&n,&m);
	for(i=1;i<=m;++i)
	{
		fscanf(in,"%d %d",&x,&y);
		V[x].push_back(y);
	}
	for(i=1;i<=n;++i)
		if(!viz[i])
			dfs(i);
	for(i=1;i<=n;i++)
		fprintf(out,"%d ",rez[i]);
	fprintf(out,"\n");
	return 0;
}