Cod sursa(job #616753)

Utilizator Cristina94Cristina Ungurean Cristina94 Data 13 octombrie 2011 11:44:39
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
#include<iostream.h>
int a[1000][1000],viz[100000],sol[100000],cost[100000],c[100000],n,m,x,y,s;

int main()
{
	int i, ps, pi;
	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][y]=1;
	}
	ps=pi=1;
	viz[s]=1;
	sol[s]=0;
	c[1]=s;
	cost[1]=0;
	while(ps<=pi)
	{
		for(i=1;i<=n;i++)
			if(a[c[ps]][i]==1&&viz[i]==0)
			{
				pi++;
				c[pi]=i;
				viz[i]=1;
				cost[pi]=cost[ps]+1;
				sol[i]=cost[pi];
			}
		ps++;
	}
	for(i=1;i<=n;i++)
	{
		if(i!=s &&sol[i]==0)
			sol[i]=-1;
		printf("%d ", sol[i]);
	}
	return 0;
}