Cod sursa(job #851568)

Utilizator alinaelenaFMI Colceag Alina alinaelena Data 10 ianuarie 2013 01:42:54
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<cstdio>
#include<vector>
using namespace std;
#define nmax 100001
using namespace std;
int viz[nmax],q[nmax];
vector <int> v[100];

int n,m,s;

void read()
{
	int i,x,y;
	for (i=1;i<=m;++i)
	{
		scanf("%d %d",&x,&y);
		v[x].push_back(y);
		
	}
		
}


void bfs(int nod)
{
	
	int p=0,u=0; int i;
	q[p]=s;
	

	while(p<=u)
	{
		for (i=0;i<v[q[p]].size();++i)				
				if (viz[v[q[p]][i]]==0)
				{
					u++;
					viz[v[q[p]]][i]=viz[q[p]]+1;
					q[u]=v[q[p]][i];
				}
				
		
			p++;
	}

 for (i=1;i<=n;++i)
	if(viz[i])
   printf("%d ",viz[i]);
else
	printf("-1 ");

}



int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d%d%d",&n,&m,&s);
	read();
	
	int i;
	for (i=1;i<=n;++i)
		if (s==i) 
			printf("0 ");
		else
		bfs(i);
}