Cod sursa(job #628828)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 2 noiembrie 2011 10:56:44
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <vector>
#include <queue>

using namespace std;

FILE *f,*s;

vector <int> v1[100000];

queue <int> q;

int v2[100000],v3[100000];

int i,j,k,l;

int x,y,z;

void BFS(int nod)
{
	for(i=1;i<=x;i++) v3[i]=-1;
	
	v3[nod]=0;
	
	q.push(nod);
	
	while(!q.empty())
	{
		k=q.front();
		
		q.pop();
		
		for(i=0;i<v2[k];i++)
		{
			if(v3[v1[k][i]]==-1)
			{
				q.push(v1[k][i]);
				
				v3[v1[k][i]]=1+v3[k];
			}	
		}	
	}
}

int main()
{
	f=fopen("bfs.in","r");
	s=fopen("bfs.out","r");
	
	fscanf(f,"%d %d %d",&x,&y,&z);
	
	for(i=1;i<=y;i++)
	{
		int a,b;
		
		fscanf(f,"%d %d",&a,&b);
		
		v1[a].push_back(b);
	}
	
	for(i=1;i<=x;i++)
		v2[i]=v1[i].size();
	
	BFS(z);
	
	for(i=1;i<=x;i++)
		fprintf(s,"%d ",v3[i]);
	
	return 0;
}