Cod sursa(job #455776)

Utilizator k_killerSzabo Krisztian k_killer Data 14 mai 2010 10:46:11
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
using namespace std;

typedef struct celula{
	int info;
	struct celula *urm;
} cel,*lista;

lista l,fii[50000];
long viz[50000];

void dfs(long q){
	lista w,p;
	viz[q]=1;
	p=fii[q];
	while (p){
		if (viz[p->info]==0) dfs(p->info);
		p=p->urm;
	}
    w = new cel;
    w->info=q;
    w->urm=l;
    l=w;
}
 
int main(){
	ifstream fin;
	ofstream fout;
	fin.open("sortaret.in");
	fout.open("sortaret.out");

	long n,m,x,y,i;
	fin >> n >> m;

	for (int i=1; i<=n; i++){
		fii[i]=0;
	    viz[i]=0;
    }

    for (; m; --m){
		fin >> x >> y;
		l = new cel;
        l->info = y;
        l->urm = fii[x];
        fii[x] = l;
	}
    l=0; 

    for (i=1; i<=n; i++){
	    if (viz[i]==0) dfs(i);
    } 

    while (l){
		fout << l->info << " ";
        l=l->urm;
    } 
	fout << endl;
    return 0;

}