Cod sursa(job #773490)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 1 august 2012 20:27:36
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>
#define LE 100600
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int t,t2,prim,j,i,viz[LE],okz,lev[LE],x,y,n,m,k,V2[LE],prim1,r;
vector <int> H[LE],C,level;
void BF()
{
	int good=1;
	while (good==1)
	{
		okz++;
		prim=C.size()-1;
		while (prim>=0&&level[prim]==okz-1)
		{
		    for(i=0;i<H[C[prim]].size();++i)
			    if (!viz[H[C[prim]][i]])  
					{
						viz[H[C[prim]][i]]=1;
						C.push_back(H[C[prim]][i]);V2[++k]=H[C[prim]][i];
						level.push_back(okz);
						++t2;
					}
          prim--;
		}
		t=t2;t2=0;
		t==0?good=0:good=1;
	}
	
}
int main()
{
	f>>n>>m;
	for(i=1;i<=m;++i)
	{	
		f>>x>>y;
	    H[x].push_back(y);
	    lev[y]++;
	}
	
	for(i=1;i<=n;++i) 
		if (lev[i]==0) H[0].push_back(i);
	level.push_back(0);
	C.push_back(0),t=1;
		BF();
		
	for(i=1;i<C.size();++i)
		g<<C[i]<<" ";
	
	g<<'\n';
	f.close();g.close();
	return 0;
}