Cod sursa(job #640966)

Utilizator ArnoldCsorvasi Arnold Arnold Data 26 noiembrie 2011 21:18:45
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#include<vector>
#define n 100010

using namespace std;

vector<int> g[n];

int sor[n], tav[n], volt[n], start1, end1, akt,N,M,S;
int i,x,y;

int main()
{
	freopen("bfs.in","r",stdin);
	scanf ("%d %d %d",&N,&M,&S);
	for (i=1;i<=N;i++)
		tav[i]=-1;
	
	for (i=1;i<=M;i++)
		{
			scanf("%d %d",&x,&y);
			g[x].push_back(y);
     	}
	sor[1]=S;volt[S]=1;tav[S]=0;start1=1;end1=1;
	while (start1<=end1)
	{
	akt=sor[start1];
	for (i=0;i<g[akt].size();i++)
	if (volt[g[akt][i]]==0)
	{
	sor[++end1]=g[akt][i];
	tav[g[akt][i]]=tav[akt]+1;
	volt[g[akt][i]]=1;
	}
	start1++;
	}
	freopen("bfs.out","w",stdout);
	for (i=1;i<=N;i++)
		printf ("%d ",tav[i]);

	return 0;
}