Cod sursa(job #529898)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 6 februarie 2011 14:43:03
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>
#include<vector>
using namespace std;

vector<int> a[100010];
int cost[100010],g[100010],s[100010];
int n,m,l,start;

void bfs (int nod)
{
	int i,j;
	for (i=1; i<=n; i++)
		cost[i]=-1;
	l=1; cost[nod]=0; s[1]=nod;
	for (i=1; i<=l; i++)
		for (j=0; j<g[s[i]]; j++)
			if (cost[a[s[i]][j]]==-1)
			{
				s[++l]=a[s[i]][j];
				cost[s[l]]=cost[s[i]]+1;
			}
}

int main ()
{
	int i,x,y;
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d %d %d",&n,&m,&start);
	for (i=1; i<=m; i++)
	{
		scanf("%d %d",&x,&y);
		a[x].push_back(y);
	}
	for (i=1; i<=n; i++)
		g[i]=a[i].size();
	bfs(start);
	for (i=1; i<=n; i++)
		printf("%d ",cost[i]);
	printf("\n");
	return 0;
}