Cod sursa(job #1241062)

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

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

queue < 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(s);
  cost[s]=0;
  while(!q.empty()){
     int ft;
     ft=q.front();
     for(vector <int> :: iterator it=gr[ft].begin();it!=gr[ft].end();++it){
        if(cost[*it]==-1){
             q.push(*it);
             cost[*it]=cost[ft]+1;
        }
     }
     q.pop();
  }
   print();
}