Cod sursa(job #634828)

Utilizator Tucu94Andrei Tuculanu Tucu94 Data 17 noiembrie 2011 14:04:41
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#include<vector>
#include<queue>

using namespace std;

vector<long int> a[100001];
long int viz[100001],n,m;

void distanta_varfuri(long int v)
{	queue<long int> c;
	long int primul,j;
	c.push(v);
	for(j=1;j<=n;j++)
		viz[j]=-1;
	viz[v]=0;
	while(c.empty()==0)	{
		primul=c.front();
		for(j=0;j<a[primul].size();j++)
			if(viz[a[primul][j]]==-1)	{
				c.push(a[primul][j]);
				viz[a[primul][j]]=viz[primul]+1;
			}
		c.pop();
	}
}

int main()
{	long int i,x,y,s;
	FILE *f,*g;
	f=fopen("bfs.in","r");
	g=fopen("bfs.out","w");
	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);
	}
	distanta_varfuri(s);
	for(i=1;i<=n;i++)
		fprintf(g,"%ld ",viz[i]);
	fclose(f);
	fclose(g);
	return 0;
}