Cod sursa(job #419882)

Utilizator hazegirlCatalina Predoi hazegirl Data 18 martie 2010 09:44:59
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
// bfs - parcurgerea in latime
#include<fstream.h>
#include<stdlib.h>
long n,m,s, *c, *v[100001],*niv,*viz,x,y,st,dr,i;
int main()
{
	ifstream f("bfs.in");
	ofstream g("bfs.out");
	f>>n>>m>>s;
	c=(long *)calloc((n+1),sizeof(long));
	niv=(long *)calloc((n+1),sizeof(long));
	viz=(long *)calloc((n+1),sizeof(long));
	for(i=1;i<=n;i++)
	{
		v[i]=(long *)calloc(1,sizeof(long));
		niv[i]=-1;
	}
	for(i=1;i<=m;i++)
	{
		f>>x>>y;
		v[x][0]++;
		v[x]=(long *)realloc(v[x],(v[x][0]+1)*sizeof(long));
		v[x][v[x][0]]=y;
	}
	c[0]=s;
	niv[s]=0;
	viz[s]=1;
	st=0;
	dr=0;
	while(st<=dr)
	{
		for(i=1;i<=v[c[st]][0];i++)
			if(!viz[v[c[st]][i]])
			{
				dr++;
				c[dr]=v[c[st]][i];
				niv[c[dr]]=niv[c[st]]+1;
			}
		
		st++;
	}
	for(i=1;i<=n;i++)
		g<<niv[i]<<' ';
	g<<'\n';
	f.close(); 
	g.close();
	return 0;
}