Cod sursa(job #721557)

Utilizator AndupkIonescu Alexandru Andupk Data 23 martie 2012 19:54:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
#include<vector>
#define maxn 100001
using namespace std;
int n,m,nod,l,i,j,x,y;
int cost[maxn],g[maxn],s[maxn];
vector<int> a[maxn];
void bfs(int nod)
{
for(i=0;i<=n;i++)
   cost[i]=-1;
l=1;
s[l]=nod;
cost[nod]=0;

    for(i=1;i<=l;i++)
	  for(j=0;j<g[s[i]];j++)
           if(cost[a[s[i]][j]]==-1)
		   { l++;
			 s[l]=a[s[i]][j];
             cost[s[l]]=cost[s[i]]+1;			 
		   }			   
}

int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);

scanf("%d %d %d",&n,&m,&nod);
while(m)
{
 scanf("%d %d",&x,&y);
 a[x].push_back(y);
 m--;
 }
for(i=1;i<=n;i++)
   g[i]=a[i].size();
bfs(nod);
for(i=1;i<=n;i++)
   printf("%d ",cost[i]);
return 0;
}