Cod sursa(job #1045174)

Utilizator rvnzphrvnzph rvnzph Data 30 noiembrie 2013 23:34:33
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>
#include <vector>
#include <queue>

using namespace std;

const int NLen=100001;

vector <int> g[NLen];
queue <int> q;

int use[NLen];
int Dest[NLen];

void bfs(int node)
{
	q.push(node);
	use[node]=1;
	Dest[node]=0;

	while(!q.empty())
	{
		node=q.front();
		q.pop();

		for(vector<int>::iterator it=g[node].begin();it!=g[node].end();++it)
			if(!use[*it])
			{
				use[*it]=1;
				Dest[*it]=Dest[node]+1;
				q.push(*it);
			}
	}
}

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);

	int N,M,S;
	scanf("%d%d%d",&N,&M,&S);

	while(M--)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		g[x].push_back(y);
	}

	for(int i=1;i<=N;++i)
		use[i]=0, Dest[i]=-1;

	bfs(S);

	for(int i=1;i<=N;++i)
		printf("%d ",Dest[i]);
	printf("\n");

	return 0;
}