Cod sursa(job #481106)

Utilizator marius21Marius Petcu marius21 Data 30 august 2010 16:30:56
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>
#include <cstdlib>
#include <list>

FILE *fin=fopen("sortaret.in","r");
FILE *fout=fopen("sortaret.out","w");

int n,m;
std::list<int> a[100000];
bool viz[100000];

void viziteaza(int i)
{
	if (viz[i]) return;
	viz[i]=true;
	std::list<int>::const_iterator in,end=a[i].end();
	for (in=a[i].begin(); in!=end; in++)
		viziteaza(*in);
	fprintf(fout, "%d ",i+1);
}

int main (int argc, char * const argv[]) {
	fscanf(fin, "%d %d",&n,&m);
	for (int i=0; i<m; i++)
	{
		int x,y;
		fscanf(fin, "%d %d",&x,&y);
		x--; y--;
		a[y].push_back(x);
	}
	memset(viz, 0, sizeof(bool)*n);
	for (int i=0; i<n; i++)
		viziteaza(i);
	fputc('\n', fout);
	fclose(fin);
	fclose(fout);
    return 0;
}