Cod sursa(job #616776)

Utilizator Cristina94Cristina Ungurean Cristina94 Data 13 octombrie 2011 12:06:58
Problema BFS - Parcurgere in latime Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<stdio.h>
int a[1000][1000],viz[1000],sol[1000],cost[1000],c[1000];
int n,m,x,y,s;

int main()
{
	int i, ps, pi;
	freopen("bfs.in", "r" ,stdin);
	freopen("bfs.out", "w", stdout);
	scanf("%d %d %d", &n, &m, &s);
	
	for(i=1;i<=m;i++)
	{
		scanf("%d %d", &x, &y);
		a[x][y]=1;
	}
	ps=pi=1;
	viz[s]=1;
	c[1]=s;
	while(ps<=pi)
	{
		for(i=1;i<=n;i++)
			if(a[c[ps]][i]==1&&viz[i]==0)
			{
				pi++;
				c[pi]=i;
				viz[i]=1;
				cost[pi]=cost[ps]+1;
				sol[i]=cost[pi];
			}
		ps++;
	}
	for(i=1;i<=n;i++)
	{
		if(i!=s &&sol[i]==0)
			sol[i]=-1;
		printf("%d ",sol[i]);
	}
	return 0;
}