Cod sursa(job #352476)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 1 octombrie 2009 23:56:02
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h> 
int i, n, m, s, p, u, x, y;
int a[10000][10000], c[100000], v[100000];

FILE * f = fopen("bfs.in", "r");
FILE * g = fopen("bfs.out", "w");

int main (){
	
	fscanf (f, "%d %d %d", &n, &m, &s);
	for (i = 1 ; i <= m ; i++) {
		fscanf(f, "%d %d", &x, &y);
		a[x][y] = 1;
	}
	
	p = 1;
	u = 2;
	c[p] = s;
	v[s] = 1;
	
	while (p < u){
		
		for (i = 1 ; i <= n ; i++) 
 			if (a[ c[p] ][ i ] == 1 && v[i] == 0) {	
					c[u] = i;
					v[i] = v[ c[p] ] + 1; 
					u++;
			}
		
		p++;
		
	}
	
	for (i = 1 ; i <= n ; i++) 
		if (v[i] == 0) fprintf (g, "-1 ");
			else fprintf (g, "%d ", v[i] - 1);

	
	fclose(f);
	fclose(g);
	return 0;
	
}