Cod sursa(job #339295)

Utilizator razvi9Jurca Razvan razvi9 Data 9 august 2009 12:22:50
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<cstdio>
#include<vector>
using namespace std;

vector<int> a[100001];
int n,m,s,i,j,q[100001],v[100001],st,dr;

int main()
{
	memset(v,-1,sizeof(v));
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d %d %d",&n,&m,&s);
	++m;
	while(--m)
	{
		scanf("%d %d",&i,&j);
		a[i].push_back(j);
	}
	q[(st=(dr=0))]=s;
	v[s]=0;
	while(st<=dr)
	{
		s=q[st];
		j=v[s]+1;
		for(i=0;i<a[s].size();++i)
			if(v[a[s][i]]==-1)
			{
				v[a[s][i]]=j;
				q[++dr]=a[s][i];
			}
		++st;
	}
	for(i=1;i<=n;++i)
		printf("%d ",v[i]);
	fclose(stdout);
	return 0;
}