Cod sursa(job #374826)

Utilizator GotenAmza Catalin Goten Data 18 decembrie 2009 14:00:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<fstream.h>

int v[1001000][2],t,s,start[101000],i,n,m,x,gasit,nr,c[101000][2],viz[101000],poz[101000],p,u;

int main()
{
	ifstream f("bfs.in");
	ofstream g("bfs.out");
	f>>n>>m>>s;
	for(i=1;i<=m;i++)
	{
		f>>x>>v[i][0];
		v[i][1]=start[x];
		start[x]=i;
	}
	u=0;
	p=1;
	c[++u][0]=s;
	viz[s]=1;
	poz[s]=u;
	while(p<=u)
	{
		t=start[c[p][0]];
		while(t)
		{
			if(!viz[v[t][0]])
			{
				c[++u][0]=v[t][0];
				c[u][1]=1+c[p][1];
				viz[v[t][0]]=1;
				poz[v[t][0]]=u;
			}
			t=v[t][1];
		}
		p++;
	}
	for(i=1;i<=n;i++)
		if(!c[poz[i]][0]&&s!=i)
			g<<"-1 ";
		else
			g<<c[poz[i]][1]<<' ';
	return 0;
}