Cod sursa(job #638786)

Utilizator marinMari n marin Data 21 noiembrie 2011 16:57:08
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <stdio.h>
#include <list>


#define DIM 100002

using namespace std;

struct nod {
	int v;
	nod* adr;
};

nod *L[DIM], *q;
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);
		q = new nod;
		q->v = y;
		q->adr = L[x];
		L[x] = q;
	}
	fclose(f);
	
	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 (q = L[C[p]]; q!=NULL; q = q->adr) {
			if (!V[q->v]) {
				C[++u] = q->v;
				V[q->v] = 1;
				X[q->v] = 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;
}