Cod sursa(job #846360)

Utilizator test_13testing test_13 Data 1 ianuarie 2013 22:14:49
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;
#define Max 100001

vector<int>g[Max];
int d[Max],c[Max];
bool viz[Max];

void bfs(int x)
{
	int p,u,y;
	c[p=u=1]=x;
	viz[x]=1;
	while(p<=u)
	{
		x=c[p++];
		for(int i=0;i<g[x].size();i++)
		{
			y=g[x][i];
			if(!viz[y])
			{
				c[++u]=y;
				d[y]=d[x]+1;
				viz[y]=1;
			}
		}
	}
}

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

		for(int i=1;i<=n;i++)printf("%d ",i==s?0:d[i]==0?-1:d[i]);
	return 0;
}