Cod sursa(job #575789)

Utilizator andrici_cezarAndrici Cezar andrici_cezar Data 8 aprilie 2011 18:58:22
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>

long p, i, u, N, M, X, x, y, z, a[10000][10000], viz[100000], c[100000];

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	
		scanf("%ld %ld %ld", &N, &M, &X);
		
		for (i = 1; i <= M; i ++)
		{
			scanf("%ld %ld", &x, &y);
			a[x][y] = 1;
		}
		
		p = u = 1;
		c[1] = X;
		viz[X] = 1;
		
		while (p <= u)
		{
			z = c[p];
			p ++;
			for (i = 1; i <= N; i ++)
				if (a[z][i] == 1 && viz[i] == 0)
				{
					u ++;
					c[u] = i;
					viz[i] = viz[z] + 1;
				}
		}
		for (i = 1; i <= N; i ++)
			if (i == X) printf("0 ");
		else printf("%ld ", viz[i] - 1);
			printf("\n");
	
	return 0;
}