Cod sursa(job #683006)

Utilizator chirila_aronChirila Aronel chirila_aron Data 19 februarie 2012 20:42:09
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>
int a[2][1000],n,m,s,st[1000],viz[1000];
void citire()
{
	int x,y,i;
	ifstream fin("bfs.in");
	fin>>n>>m>>s;
	for(i=1;i<=m;i++)
	{
		fin>>x>>y; 
		a[0][i]=y;
		a[1][i]=st[x];
		st[x]=i;
	}
}
void bfs(int s)
{
	int p,u,c[1000],v,k;
	k=1;
	p=u=1;
	c[p]=s;
	viz[s]=k;
	while(p<=u)
	{
		v=st[c[p]];
		p++;
		while(v)
		{
			if(viz[a[0][v]]==0)
			{
				u++;
				c[u]=a[0][v];
				viz[a[0][v]]=k;
			}
			v=a[1][v];
		}
		k++;
	}
	viz[s]=0;
}
void afisare()
{
	int i;
	ofstream fout("bfs.out");
	for(i=1;i<=n;i++)
	{
		if(viz[i]==0 && i!=s)
		{
			fout<<"-1"<<' ';
		}
		else
			fout<<viz[i]<<' ';
	}

}
int main()
{
	citire();
	bfs(s);
	afisare();
	return 0;
}