Cod sursa(job #413821)

Utilizator Addy.Adrian Draghici Addy. Data 9 martie 2010 10:45:47
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#define Nmax 1600

char A[Nmax][Nmax];
int C[Nmax * Nmax], D[Nmax * Nmax], viz[Nmax], N, M, S, x, y, i, j, p, u;

int main() {
	
	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", &x, &y);
		A[x][y] = 1;
	}
	
	C[1] = S, viz[S] = 1;
	for (p = u = 1; p <= u; p++) {
		for (i = 1; i <= N; i++)
			if (A[C[p]][i] && !viz[i]) {
				viz[i] = 1;
				C[++u] = i, D[i] = D[C[p]] + 1;
			}
	}
	
	for (i = 1; i <= N; i++)
		if (viz[i])
			fprintf(g, "%d ", D[i]);
		else
			fprintf(g, "-1 ");
	
	fclose(f); fclose(g);
	
	return 0;
}