Cod sursa(job #361291)

Utilizator BaduBadu Badu Badu Data 4 noiembrie 2009 15:00:05
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<vector>
#include<stdio.h>
#define max 50001
#define pb push_back

using namespace std;

vector < vector<int> > a(max);
int v[max],p[max],nr,m,n;

void date(){

	FILE *f=fopen("sortaret.in","r");
	fscanf(f,"%d %d",&n,&m);
	int x,y,i;
	for( i=0;i<m;i++){
		fscanf(f,"%d%d",&x,&y);
		a[x].pb(y);
	}
}

void DFS( int nd ){

	int i;
	v[nd]=1;
	for(i=0;i<a[nd].size();i++)
		if( !v[a[nd][i]] ) DFS( a[nd][i] );
	p[++nr]=nd;
}

int main(){
	int i;
	FILE *g=fopen("sortaret.out","w");
	date();
	
	for(i=1; i<=n ; i++)
		if( !v[i] ) DFS(i);

	for(i = n; i>0 ; i--) fprintf(g,"%d ",p[i]);
	fprintf(g,"\n");


	return 0;
}