Cod sursa(job #300998)

Utilizator stanesealexStanese Alex stanesealex Data 7 aprilie 2009 20:45:00
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>

using namespace std;

struct graf
{
	int a[10010],b;
};
graf x[10010];
int c[10010],viz[10010],cost[10010];
int main()
{
	int n,m,s,i,u,y,j;
	FILE *f=fopen("bfs.in","r");
	FILE *g=fopen("bfs.out","w");
	fscanf(f,"%d %d %d ",&n,&m,&s);
	for(i=1;i<=m;i++)
	{
		fscanf(f,"%d %d ",&u,&y);
		x[u].b++;
 		x[u].a[x[u].b]=y;
	}
	c[1]=s;
	i=1;
	cost[s]=0;
	u=1;
	viz[s]=1;
	while (i<=u)
	{
		for (j=1;j<=x[c[i]].b;j++)
		{
			if (viz[x[c[i]].a[j]]==0)
			{
				viz[x[c[i]].a[j]]=1;
				cost[x[c[i]].a[j]]=cost[c[i]]+1;
				u++;
				c[u]=x[c[i]].a[j];
			}				
		}
	i++;
	}
	for (i=1;i<=n;i++)
		if(viz[i]==0)
			fprintf(g,"%d ",-1);
		else fprintf(g,"%d ",cost[i]);
	return 0;

}