Cod sursa(job #616748)

Utilizator Cristina94Cristina Ungurean Cristina94 Data 13 octombrie 2011 11:32:09
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<stdio.h>
int a[10000][10000],viz[10000],sol[10000],cost[10000],c[10000],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;
	}

	viz[s]=1;
	sol[s]=0;
	c[1]=s;
	cost[1]=0;
	ps=pi=1;
	while(ps<=pi)
	{
		for(i=1;i<=n;i++)
			if(a[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;
}