Cod sursa(job #504662)

Utilizator auRSTARHreapca Aurelian auRSTAR Data 28 noiembrie 2010 13:36:37
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<cstdio>
#include<deque>
#include<vector>
using namespace std;
deque<int> Q;
vector<int> v[100010];
void read(),solve();
int S,N,M,x,y,cost[100010],i;

int main()
{
	read();
	solve();
	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);
	}
	memset(cost,-1,sizeof(cost));
	cost[S]=0;
	Q.push_back(S);
}
void solve()
{
	for(;!Q.empty();)
	{
		deque<int>::iterator iq;
		iq=Q.begin();
		vector<int>::iterator it;
		for(it=v[*iq].begin();it!=v[*iq].end();it++)
		{
			if(cost[*it]==-1)
			{	
				cost[*it]=cost[*iq]+1;
				Q.push_back(*it);
			}
		}
		Q.pop_front();
	}
	for(i=1;i<=N;i++)
		printf("%d ",cost[i]);
}