Cod sursa(job #398644)

Utilizator Doana_Cristiancristi09 Doana_Cristian Data 19 februarie 2010 09:02:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 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];
//char a[DIM][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;
//		a[x][y] = 1;
	}
	
	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;
}