Cod sursa(job #409738)

Utilizator petroMilut Petronela petro Data 3 martie 2010 20:39:32
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<stdio.h>
#include<vector>
#include<deque>
using namespace std;
FILE *f=fopen("bfs.in","r");
FILE *g=fopen("bfs.out","w");

#define M 100001
vector<long>a[M];
long s,n,m;
vector<long> viz(M);

void cit()
{
	long i,y,x;
	fscanf(f,"%ld%ld%ld",&n,&m,&s);
	for(i=1;i<=m;++i)
	{
		fscanf(f,"%ld%ld",&x,&y);
		a[x].push_back(y);
	}
	fclose(f);
	
	for(i=1;i<=n;++i)
		viz[i]=-1;
}
	
void afis()
{
	for(long i=1;i<=n;++i)
		fprintf(g,"%ld ",viz[i]);
	fclose(g);
}

void bfs()
{
	long c[M*2];
	long i,p,u;
	viz[s]=0;
	c[1]=s;	
	p=u=1;
	
	while(p<=u)
	{
		s=c[p];
		for(i=1;i<a[s].size();++i)
			if(viz[a[s][i]]==-1) {c[++u]=i;
							      viz[i]=viz[s]+1;}
		p++;
	}
}

int main()
{
	cit();
	bfs();
	afis();
	return 0;
}