Cod sursa(job #457232)

Utilizator mlupseLupse-Turpan Mircea mlupse Data 18 mai 2010 17:18:49
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
using namespace std;
#include <fstream>
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod
{
int inf;
nod * urm;
}* vecini[100005];
int n,m,s,c[100005],t[100005];
void add(nod* & prim,int val)
{
nod *p;
p=new nod;
p->inf=val;
p->urm=prim;
prim=p;
}
void citire()
{int i,x,y;
fin>>n>>m>>s;
for (i=1;i<=m;i++)
  {
   fin>>x>>y;
   add(vecini[x],y);
   //add(vecini[y],x);
  }
}
void bfs()
{int i=1,k=1;nod * p;
c[1]=s;viz[s]=1;
for(i=1;i<=k;i++)
	for(p=vecini[c[i]];p;p=p->urm)
		if (!viz[p->inf]) 
		    {c[++k]=p->inf;
		     t[p->inf]=c[i];
		     viz[p->inf]=1;}
}
int main()
{int i,j,nr;
citire();
bfs();
for(i=1;i<=n;i++)
	if (t[i]) 
	{
	j=i;nr=0;
	while(j)
	  {
		nr++;j=t[j];
	  }
	fout<<nr-1<<" ";
	}
	else
	  if (i==s)
		fout<<"0 ";
	  else
		fout<<"-1 ";
return 0;
}