Cod sursa(job #904892)

Utilizator PregatireONIAnamaria Cotirlea PregatireONI Data 4 martie 2013 22:36:05
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#include <vector>
#include <queue>

using namespace std;

FILE *f,*s;

vector <int> v1[50005];

bool v2[50005];

int m,n,i,j;

int v3[50005];

void DFS(int x)
{
    v2[x]=1;
	
    for(int i=0; i<v1[x].size();i++)
        if(!v2[v1[x][i]])
			DFS(v1[x][i]);
		
    v3[++v3[0]]=x;
}

int main()
{
	f=fopen("sortaret.in","r");
	s=fopen("sortaret.out","w");
	
	fscanf(f,"%d %d",&n,&m);
	
	for(i=1;i<=n;i++)
	{
		int a,b;
		
		fscanf(f,"%d %d",&a,&b);
		
		v1[a].push_back(b);
	}
	
	for(i=1;i<=n;i++)
        if(!v2[i])
			DFS(i);
	
	for(i=v3[0];i>0;i--)
		fprintf(s,"%d ",v3[i]);	
		
	fclose(s);
	
	return 0;
}