Cod sursa(job #638777)

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


#define DIM 100002

using namespace std;

list<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++) {
		list<int>::iterator it;
		for (it = L[C[p]].begin(); it != L[C[p]].end(); it++) {
			if (!V[*it]) {
				C[++u] = *it;
				V[*it] = 1;
				X[*it] = 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;
}