Cod sursa(job #1761749)

Utilizator geni950814Geni Geni geni950814 Data 22 septembrie 2016 20:15:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>
#include <deque>
#include <vector>
#include <iostream>

using namespace std;

int N, M, S;
vector<vector<int>> V(100001);
vector<int> sol;
deque<int> dq;

void bfs() {
  sol[S] = 0;
  dq.push_back(S);
  int curr;
  while(!dq.empty()) {
    curr = dq.front();
    dq.pop_front();
    for(int e : V[curr]) {
      if(sol[e] == -1) {
        dq.push_back(e);
        sol[e] = sol[curr]+1;
      }
    }
  }
}

int main() {

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

  scanf("%d %d %d", &N, &M, &S);
  sol.push_back(-1);
  int fst, snd;
  for(int i = 1; i <= M; i++) {
    scanf("%d %d", &fst, &snd);
    V[fst].push_back(snd);
    sol.push_back(-1);
  }

  bfs();

  for(int i = 1; i <= N; i++) {
    printf("%d ", sol[i]);
  }


  return 0;
}