Cod sursa(job #418506)

Utilizator n3msizN3msiz n3msiz Data 15 martie 2010 22:37:04
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <vector>
using namespace std;

vector <int> a[100050];
int n, m, s, x, y, i, p, u, z;
int C[Nmax], v[100050], lglin[100050], viz[100050];

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);
		a[x].push_back(y);
	}
	
	for(i=1;i<=n;i++)
		lglin[i]=a[i].size();
	
	memset(v, -1, sizeof(v));
	
	C[1]=s;
	v[s]=0;
	viz[s]=1;
	p=1;
	u=1;
	while(p<=u){
		for (i=0;i<lglin[C[p]];i++) {
			z = a[C[p]][i];
			if (!viz[z]) {
				viz[Z]=1;
				C[++u]=z;
				v[z]=v[C[p]] + 1;
			}
		}
		p++;
	}
	for (i = 1; i <= n; i++)
		fprintf(g,"%d ",v[i]);
	
	fclose(f); fclose(g);
	
	return 0;
}