Cod sursa(job #283877)

Utilizator ooctavTuchila Octavian ooctav Data 20 martie 2009 13:03:48
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#include <vector>
#include <queue>

using namespace std;
const int N=100004;
int n,s;
vector<int> d(N,-1);
vector<int> a[N];
void citire()
{
	int m,x,y;
	scanf("%d %d %d",&n,&m,&s);
	while(m--)
	{
		scanf("%d %d",&x,&y);
		a[x].push_back(y);
	}
}
void bfs()
{
	queue<int> coada;
	int x,y;
	d[s]=0;
	coada.push(s);
	vector<int>::iterator it;
	while(!coada.empty())
	{
		x=coada.front();
		coada.pop();
		for(it=a[x].begin(); it!=a[x].end() ;it++)
		{
			y=*it;
			if(d[y]==-1)
			{
				d[y]=1+d[x];
				coada.push(y);
			}
		}
	}
}
void scrie()
{
	for(int i=1;i<=n;i++)
		printf("%d ",d[i]);
	printf("\n");
}
	

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	citire();
	bfs();
	scrie();
	
	return 0;
}