Cod sursa(job #1965901)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 14 aprilie 2017 18:33:02
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#include <vector>
#include <queue>

const int MAXN = 1e5;

std::vector <int> ad[MAXN + 1];
int ans[MAXN + 1];

int main() {
  int n, m, s, u, v;
  FILE *f = fopen("bfs.in", "r");
  fscanf(f, "%d%d%d", &n, &m, &s);
  ans[s] = 1;
  for (int i = 1; i < m; ++i) {
    fscanf(f, "%d%d", &u, &v);
    ad[u].push_back(v);
  }
  fclose(f);
  std::queue <int> q;
  q.push(s);
  while (!q.empty()) {
    u = q.front();
    q.pop();
    for (auto v: ad[u]) {
      if (!ans[v]) {
        ans[v] = ans[u] + 1;
        q.push(v);
      }
    }
  }
  f = fopen("bfs.out", "w");
  for (int i = 1; i < n + 1; ++i) {
    fprintf(f, "%d ", --ans[i]);
  }
  fprintf(f, "\n");
  fclose(f);
  return 0;
}