Cod sursa(job #419408)

Utilizator ClasianMunteanu Petre Clasian Data 17 martie 2010 14:20:38
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream.h>
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n,m,i,a[50000][1000],x,y,vc[50000],cv[50000],ti[50000],t,sol[50000];
void bek(int i)
{ for(int j=1;j<=a[i][0];j++) if(!vc[a[i][j]]){ cv[a[i][j]]=vc[a[i][j]]=1;
												bek(a[i][j]);
											  }
  ti[++t]=i;  
}
int main()
{ f>>n>>m;
  for(i=1;i<=m;i++) f>>x>>y,a[x][0]++,a[x][a[x][0]]=y;t=1;
  for(i=1;i<=n&&t;i++)if(!cv[i]) { t=0; 
								memset(vc,0,50000);
								//memset(ti,0,50000);
								cv[i]=vc[i]=1;  
								bek(i);
								if(t==n)  { t=0;for(int j=n;j;j--)g<<ti[j]<<' '; 
											//memcpy(sol,ti,50000);
										  }
							  }
  for(;t;t--)g<<ti[t]<<' ';
  f.close();
  g.close();
  return 0;
}