Cod sursa(job #702616)

Utilizator Anonymous1010Chilivercu Cristian Anonymous1010 Data 2 martie 2012 00:30:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
#include<vector>

using namespace std;

int n,m,k,ok[100002],c[100002],b[100002],i,j,l,r;
vector <int>a[100002];

void bfs();

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	
	scanf("%d %d %d",&n,&m,&k);
	
	for(i=1;i<=m;i++)
	{
		scanf("%d %d",&l,&r);
		a[l].push_back(r);
	}
	
	for(i=1;i<=n;i++)
		b[i]=a[i].size();
	
	c[0]=1;
	c[1]=k;
	ok[k]=1;
	
	bfs();
	
	for(i=1;i<=n;i++)
		printf("%d ",ok[i]-1);
		
	return 0;
}

void bfs()
{
	
	for(i=1;i<=c[0];i++)
		for(j=0;j<b[c[i]];j++)
			if(ok[a[c[i]][j]] == 0)
			{
				c[0]++;
				c[c[0]]=a[c[i]][j];
				ok[c[c[0]]]=ok[c[i]]+1;
			}
}