Cod sursa(job #559643)

Utilizator blucrosoftTimotei Costel blucrosoft Data 17 martie 2011 22:43:32
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<iostream>
#include<fstream>
#include<vector>

using namespace std;

#define maxn 100010;
vector <int> v[maxn];
int N, M, Start, G[maxn], Cost[maxn], S[maxn];

void BFS(int nod){ int i, j;
  memset(Cost, -1, sizeof(Cost));
  L = 1;
  Cost[nod] = 0;
  S[L] = nod;
  for(i = 1; i<=L; i++)
    for(j = 0; j<G[S[i]]; j++)
      if(Cost[v[S[i]][j]] == -1){
	S[++L] = v[S[i]][j];
	Cost[S[L]] = Cost[S[i]] + 1;
      }
}

int main(){
  ifstream f ("bfs.in");
  ofstream g ("bfs.out");
  f >> N >> M >> Start;
  for(int i=1; i<=M; i++){ int x, y;
    f >> x >> y;
    v[x].push_back(y);
  }
  for(int i=1; i<=N; i++){
    G[i]=v[i].size();
  }
  BFS(Start);
  for(int i=1; i<=N; i++)
    g << Cost[i] << ' ';
  return 0;
}