Cod sursa(job #638761)

Utilizator marinMari n marin Data 21 noiembrie 2011 16:24:11
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <vector>

#define DIM 100002

using namespace std;

vector<int> L[DIM];
int C[DIM];
int X[DIM];
char V[DIM];
int D[DIM];
int p, u, i, N, M, S, x, y;

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);
		L[x].push_back(y);
	}
	fclose(f);
	
	for (i=1;i<=N;i++) {
		D[i] = L[i].size();
	}
	
	C[1] = S;
	p = u = 1;
	V[S] = 1;

	while (p<=u) {
		for (i=0;i<D[C[p]];i++) {
			if (!V[L[C[p]][i]]) {
				C[++u] = L[C[p]][i];
				V[L[C[p]][i]] = 1;
				X[L[C[p]][i]] = X[C[p]] + 1;
			}
		}
		p++;
	}
	
	for (i=1;i<=N;i++) {
		if (!V[i]) {
			fprintf(g,"%d ",-1);
		} else {
			fprintf(g,"%d ",X[i]);
		}
	}
		
	fclose(g);
	return 0;
}