Cod sursa(job #228524)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 7 decembrie 2008 14:10:04
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
#include<vector>
#include<queue>
#include<stdlib.h>
using namespace std;
vector<int> a[100005];
queue<int> c;
vector<int>::iterator ii;
long n,m,s,i,x,y,b[100005],q;
int main()
{
 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);a[x].push_back(y);}
 memset(b,-1,sizeof(b));
 b[s]=0;c.push(s);
 while(!c.empty()){q=c.front();c.pop();
   for(ii=a[q].begin();ii!=a[q].end();++ii)
      if(b[*ii]==-1){b[*ii]=b[q]+1;c.push(*ii);}}
 for(i=1;i<=n;++i)printf("%ld ",b[i]);
 printf("\n");
 return 0;
}