Cod sursa(job #406921)

Utilizator andreirRoti Andrei andreir Data 1 martie 2010 21:39:23
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
#include<vector>
#include<queue>
#define N_max 100001
using namespace std;
queue<int>q;
vector<int>a[N_max];
int cost[N_max],viz[N_max],c[N_max];
unsigned int N,M,S;
int main()
{
	unsigned int i,x,y,nod;
	//citire
	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); a[x].push_back(y); }
	
	//rezolvare
	q.push(S);cost[S]=0;viz[S]=1;
	while(q.empty()==false)
	{
		nod=q.front();
		q.pop();
		for(i=0;i<a[nod].size();++i)
			if(viz[a[nod][i]]==0)
			{
				q.push(a[nod][i]);
				viz[a[nod][i]]=1;
				cost[a[nod][i]]=cost[nod]+1;
			}
	}
	
	for(i=1;i<=N;++i)
		if(viz[i]==1)
			printf("%d ",cost[i]);
		else
			printf("-1 ");
	return 0;
}