Cod sursa(job #551745)

Utilizator alexandra_naeNae Alexandra Beatrice alexandra_nae Data 11 martie 2011 08:07:48
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>
#include<vector>
#define N 1000001

using namespace std;
vector<int>a[N];
int n,x0;
int d[N],pred[N],coada[N];

void citire();
void bfs();
void afisare();

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	citire();
	bfs();
	afisare();
	return 0;
}



void citire()
{
	int i,x,m,y;
	scanf("%d%d%d",&n,&m,&x0);
	for(i=0;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		a[x].push_back(y);
	}
	for(i=0;i<=N;i++)
		d[i]=-1;
}

void bfs()
{
	int p=0,u=0,x,y,i;
	d[x0]=0;
	coada[u++]=x0;
	while(p!=u) 
	{
		x=coada[p++];
		for(i=0;i<a[x].size();++i)
		{
			y=a[x][i];
			if(d[y] == -1)
			{
				d[y] = 1 + d[x];
				pred[y] = x;
				coada[u++] = y;
			}
		}
	}
}
	
void afisare()
{
	int i;
	for(i=1;i<=n;i++)
		printf("%d ",d[i]);
}