Cod sursa(job #223157)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 27 noiembrie 2008 01:10:32
Problema BFS - Parcurgere in latime Scor Ascuns
Compilator cpp Status done
Runda Marime 0.66 kb
#include <stdio.h>
#include <string>

#define maxn 1010

int N, M, Start, L;
char A[maxn][maxn];
int Cost[maxn], S[maxn];

void BFS(int nod)
{
	int i, j;

	memset(Cost, -1, sizeof(Cost));

	L = 1;
	S[L] = nod;
	Cost[nod] = 0;

	for (i = 1; i <= L; i++)
		for (j = 1; j <= N; j++)
			if (Cost[j]==-1 && A[S[i]][j]) 
			{
				S[++L] = j;
				Cost[j] = Cost[S[i]] + 1;
			}
}

int main()
{
	freopen("bfs.in", "r", stdin);
	freopen("bfs.out", "w", stdout);

	int i, x, y;

	scanf("%d %d %d ", &N, &M, &Start);

	for (i = 1; i <= M; i++) 
	{
		scanf("%d %d ", &x, &y);
		A[x][y] = 1;
	}

	BFS(Start);

	for (i = 1; i <= N; i++) printf("%d ", Cost[i]);
	printf("\n");

	return 0;
}