Cod sursa(job #256625)

Utilizator luk17Luca Bogdan luk17 Data 11 februarie 2009 22:35:02
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#include<vector>
#define NMAX 100001
using namespace std;
vector <int> a[NMAX];
int G[NMAX],n,m,cost[NMAX];
int main()
{
	int i,k,pr,ul,c[NMAX],s,x,y;
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d%d%d",&n,&m,&s);
	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();
		cost[i]=-1;
	}
	/*for(i=1;i<=n;i++)
	{
	for(int j=0;j<a[i].size();j++)
		printf("%d ",a[i][j]);
	printf("\n");}*/

	c[1]=s;
	pr=ul=1;
	cost[s]=0;
	while(pr<=ul)
	{
		k=c[pr++];
		for(i=1;i<G[k];i++)
			if(cost[a[k][i]]==-1)
			{
				c[++ul]=a[k][i];
				cost[a[k][i]]=cost[k]+1;
			}
	}
	for(i=1;i<=n;i++)
		printf("%d ",cost[i]);
return 0;}