Cod sursa(job #333373)

Utilizator levap1506Gutu Pavel levap1506 Data 22 iulie 2009 15:07:13
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
int N,M,S,a,b, Nx[100010], Q[100010],i,j;
vector<int> V[100010];
vector<int>::iterator it;
bool bb;
int main() {
  ifstream in;
  ofstream out;
  in.open("bfs.in");
  out.open("bfs.out");
  in >> N >> M >> S;
  for (i=0; i<M; i++) {
      in >> a >> b;
      V[a].push_back(b);
  }

  Q[++Q[0]]=S;
  for (i=0;i<=N;i++)
   Nx[i]=-1;
  Nx[S]=0;
  i=0;
  while (i<Q[0]) {
      i++;
      j++;
      bb=false;
      S=Q[i];
      for (it=V[S].begin(); it!=V[S].end(); it++) {
          if (Nx[*it]==-1) {
              Nx[*it]=j;
              Q[++Q[0]]=*it;
              bb=true;
          }
      }
      if (!bb) j--;
  }
  for (i=1;i<=N;i++) {
      out << Nx[i] << " ";
  }
  out.close();
return 0;
}