Cod sursa(job #588342)

Utilizator lily3Moldovan Liliana lily3 Data 7 mai 2011 18:42:23
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
using namespace std;
ofstream g("bfs.out");

int i,j,n,m,s,*a[100002],x,y,viz[100002],q[1000001],d[1000001];
void afis(int x)
{
	int p=0,i;
	if(viz[x]==0)
		g<<-1<<" ";
	else
	{
		d[0]=x;
		while(viz[d[p]]!=-1)
			d[++p]=viz[d[p-1]];
		g<<p<<" ";
	}
}
void bfs(int x,int y)
{
	int i,st=0,dr=0;
	viz[x]=-1;
	q[0]=x;
	while(st<=dr)
	{
		x=q[st++];
		for(i=1;i<=a[x][0];i++)
			if(!viz[a[x][i]])
			{
				viz[a[x][i]]=x;
				q[++dr]=a[x][i];
			}
	}
	afis(y);
}
int main()
{
	ifstream f("bfs.in");
	f>>n>>m>>s;
	for(i=0;i<=n;i++)
	{
		a[i]=(int *)realloc(a[i],sizeof(int));
		a[i][0]=0;
	}
	while(f>>x>>y)
	{
		a[x][0]++;
		a[x]=(int *)realloc(a[x],(a[x][0]+1)*sizeof(int));
		a[x][a[x][0]]=y;
	}
	for(i=1;i<=n;i++)
		bfs(s,i);
	return 0;
}