Cod sursa(job #773478)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 1 august 2012 20:00:08
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 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],lev[LE],x,y,n,m;
vector <int> H[LE],C;
void BF()
{
	int good=1;
	while (good==1)
	{
		while (t)
		{
			prim=C.size()-t;
		    for(i=0;i<H[prim].size();++i)
			    if (!viz[H[prim][i]])  
					{
						viz[H[prim][i]]=1;
						C.push_back(H[prim][i]);
						++t2;
					}
				t--;
		}
		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);
	
	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;
}