Cod sursa(job #283878)

Utilizator stinkyStinky si Grasa stinky Data 20 martie 2009 13:10:41
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=100007;

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;
}