Cod sursa(job #499125)

Utilizator AnDrEwBoYA Andrei AnDrEwBoY Data 8 noiembrie 2010 20:27:27
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<cstdio>
#include<vector>
#include<deque>
using namespace std;
deque<int> Q;
vector<int> V[100010];
int n,m,s,i,x,y,viz[100010];
void bfs(),read();
int main()
{
	read();
	bfs(); 
	return 0;
}
void read()
{
	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),V[x].push_back(y);
}
void bfs()
{
	vector<int>::iterator it;
	int d;
	Q.push_back(s);viz[s]=1;
	while(Q.size())
	{
		x = Q.front();d = viz[x]+1;
		for(it=V[x].begin();it!=V[x].end();it++)
			if(!viz[*it])
			{
				viz[*it]=d;
				Q.push_back(*it);
			}		
		Q.pop_front();
	}
	for(i=1;i<=n;i++)
		printf("%d ",viz[i]-1);
}