Cod sursa(job #1241052)

Utilizator PTAdrian64Pop-Tifrea Adrian PTAdrian64 Data 12 octombrie 2014 15:44:40
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#define nmv 100020
#include <queue>
#include <vector>
#include <cstring>

using namespace std;
int n,m,s;
int cost[nmv];

queue < pair<int,int> > q;
vector <int> gr[nmv];

void read(){
   int x,y;
   while(m--){
      scanf("%d %d ", &x, &y);
      gr[x].push_back(y);

   }
}
void print(){
  for(int i=1;i<=n;i++)
  {
        printf("%d ",cost[i]);

  }
  printf("\n");
}
int main(void){

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

  memset(cost,-1,sizeof(cost));

  scanf("%d %d %d ", &n,&m,&s);
  read();

  q.push(make_pair(s,0));
  while(!q.empty()){
     int ft,sd;
     ft=q.front().first;
     sd=q.front().second;
     cost[ft]=sd;

     for(vector <int> :: iterator it=gr[ft].begin();it!=gr[ft].end();++it){
        if(cost[*it]==-1)
          q.push(make_pair(*it,sd+1));
     }
     q.pop();
  }
   print();
}