Cod sursa(job #1169259)

Utilizator OlaruSabinOlaru Sabin OlaruSabin Data 10 aprilie 2014 19:55:28
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<cstdio>
#include<vector>
using namespace std;
vector<int>v[100005];
int coada[100005],cost[100005],viz[100005],plecare,n,m,nod1,nod2,i;
int bfs(int nod)
{
	int ic=1;
	int sf=1;
	coada[1]=plecare;
	viz[plecare]=1;
	while(ic<=sf)
	{
		for(i=0;i<=v[coada[ic]].size()-1;i++)
		{
			if(!viz[v[coada[ic]][i]])
			{
				viz[v[coada[ic]][i]]=1;
				coada[++sf]=v[coada[ic]][i];
				cost[v[coada[ic]][i]]=cost[coada[ic]]+1;
			}
		}
		ic++;
	}
}
int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d%d%d",&n,&m,&plecare);
	for(i=1;i<=m;i++)
	{
		scanf("%d%d",&nod1,&nod2);
		v[nod1].push_back(nod2);
		//v[nod2].push_back(nod1);
	}
	bfs(plecare);
	for(i=1;i<=n;i++)
		if(!viz[i])
			cost[i]=-1;
	for(i=1;i<=n;i++)
		printf("%d ",cost[i]);
}