Cod sursa(job #362166)

Utilizator tranbachhaiTran Bach Hai tranbachhai Data 8 noiembrie 2009 12:04:27
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<stdio.h>
#include<vector>
#define MAXN 100010
using namespace std;
vector <long> list[MAXN];
long l,n,m,s,viz[MAXN],cost[MAXN],lung[MAXN];
int main()
{
long i,j,x,y;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%ld%ld%ld",&n,&m,&s);
for (i=1;i<=m;++i)
{
	scanf("%ld%ld",&x,&y);
	list[x].push_back(y);
}
for (i=1;i<=n;++i) 
		lung[i]=list[i].size();
l=1;
cost[s]=1;
viz[l]=s;
for (i=1;i<=l;i++)	
		for (j=0;j<lung[viz[i]];++j)	
			if (cost[list[viz[i]][j]]==0)
			{
				viz[++l]=list[viz[i]][j];
				cost[viz[l]]=cost[viz[i]]+1;
			}
for (i=1;i<=n;i++)
			printf("%ld ",cost[i]-1);
	
return 0;
}