Cod sursa(job #727659)

Utilizator costyv87Vlad Costin costyv87 Data 28 martie 2012 10:27:43
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <cstdio>
#include <vector>
#define pb push_back
using namespace std;
FILE *f,*g;
vector <int> in[50100],out[50100];
int bf[50100],n,m,i,x,y;

void df(int x) {
int i;

bf[x]=1;

for (i=0;i<in[x].size();i++)
	if (!bf[in[x][i]])
		df(in[x][i]);

fprintf(g,"%d ",x);

for (i=0;i<out[x].size();i++)
	if (!bf[out[x][i]])
		df(out[x][i]);
}

int main() {
f=fopen("sortaret.in","r");
g=fopen("sortaret.out","w");

fscanf(f,"%d%d",&n,&m);

for (i=1;i<=m;i++) {
	fscanf(f,"%d%d",&x,&y);
	out[x].pb(y);
	in[y].pb(x);
	}

for (i=1;i<=n;i++)
	if (!bf[i])
		df(i);

fclose(g);
return 0;
}