Cod sursa(job #398646)

Utilizator maditzaaciuca madalina maditzaa Data 19 februarie 2010 09:09:00
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <iostream.h>
#include <fstream.h>
#define DIM 1001
char a[DIM][DIM];
int c[DIM];
char viz[DIM];
int D[DIM];

int n,m,i,j,p,u,s;

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



void citire(){
	int i,j,k;
	f>>n>>m>>s;
	for (k = 1; k<=m; k++) {
		f>>i>>j;
		a[i][j]=1;
	}
}
void bf(){
	int p,x,u;
	p=u=1;
	c[p]=s;
	viz[s]=1;
	while(p<=u){
		for(i=1;i<=n;i++)
			if(a[c[p]][i]==1&&!viz[i]){
				c[++u]=i;
				viz[i]=1;
				D[i] = D[c[p]] + 1;
			}
		p++;
	}
}

int main(){
	citire();
	bf();
	for (i=1;i<=n;i++)
		if (viz[i] == 0)
			g<<-1<<" ";
		else
			g<<D[i]<<" ";
	g.close();
	f.close();
	return 0;
}