Cod sursa(job #399039)

Utilizator de3de3Ilinca Diana Andreea de3de3 Data 19 februarie 2010 19:40:29
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream.h>
#include <fstream.h>

#define DIM 100001

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

nod *P[DIM],*q;

int c[DIM];
char v[DIM];
int D[DIM];

int n,m,i,u,p,x,s,y;

ifstream f("bfs.in");
ofstream g("bfs.out");

int main(){
	f>>n>>m>>s;
	for (i=1;i<=m;i++) {
		f>>x>>y;
		q = new nod;
		q->inf = y;
		q->adr = P[x];
		P[x] = q;
	}
	
	c[1] = s;
	v[s] = 1;
	u = p = 1;
	while (p<=u){
		q = P[c[p]];
		while (q!=NULL) {
			if (v[q->inf]==0){
				u++;
				c[u] = q->inf;
				v[q->inf] = 1;
				D[q->inf] = D[c[p]]+1;
			}
			q = q->adr;
		}
		p++;
	}
	
	for(i=1;i<=n;i++)
		if (v[i] == 0)
			g<<-1<<" ";
		else 
			g<<D[i]<<" ";
	
	f.close();
	g.close();
	
	return 0;
}