Problem p02678 (C++) — buggy submission, verdict: Runtime Error

#pragma region Macros
#include <bits/stdc++.h>
using namespace std;
#define REP(i, n) for (int i = 0, i##_len = (n); i < i##_len; ++i)
#define REPR(i, n) for (int i = (n); i >= 0; --i)
#define FOR(i, n, m) for (int i = (m), i##_len = (n); i < i##_len; ++i)
#define EACH(i, v) for (const auto &i : v)
#define ALL(x) (x).begin(), (x).end()
#define ALLR(x) (x).rbegin(), (x).rend()
template <class T> bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T> bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
template <class Value> using vec = vector<Value>;
using ll = long long;
using P = pair<long long, long long>;
#define fi first
#define se second
#define el endl
#pragma endregion

const string YES = "Yes";

void Main();
void solve(long long N, long long M, std::vector<long long> A,
           std::vector<long long> B);

int main() {
  std::cin.tie(nullptr);
  std::cout << std::fixed << std::setprecision(15);
  Main();
  return 0;
}

void Main() {
  long long N;
  scanf("%lld", &N);
  long long M;
  scanf("%lld", &M);
  std::vector<long long> A(M);
  std::vector<long long> B(M);
  for (int i = 0; i < M; i++) {
    scanf("%lld", &A[i]);
    scanf("%lld", &B[i]);
  }
  solve(N, M, std::move(A), std::move(B));
}

#pragma region bfs
#define BFSMAP vector<vector<BFSOBJ>>
struct BFSOBJ {
  ll x;
  ll y;
  vector<BFSOBJ *> next;
  bool is(const BFSOBJ *obj) { return x == obj->x && y == obj->y; }
  void set4(BFSMAP &ob, int i = -1, int j = -1) {
    if (j < 0 || i < 0) {
      i = x;
      j = y;
    }
    int H = ob.size();
    int W = ob[0].size();
    if (i - 1 >= 0)
      next.push_back(&ob[i - 1][j]);
    if (j - 1 >= 0)
      next.push_back(&ob[i][j - 1]);
    if (i + 1 < H)
      next.push_back(&ob[i + 1][j]);
    if (j + 1 < W)
      next.push_back(&ob[i][j + 1]);
  }
  void set8(BFSMAP &ob, int i = -1, int j = -1) {
    if (j < 0 || i < 0) {
      i = x;
      j = y;
    }
    int H = ob.size();
    int W = ob[0].size();
    bool n1, n2, n3, n4;
    if (n1 = i - 1 >= 0)
      next.push_back(&ob[i - 1][j]);
    if (n2 = j - 1 >= 0)
      next.push_back(&ob[i][j - 1]);
    if (n3 = i + 1 < H)
      next.push_back(&ob[i + 1][j]);
    if (n4 = j + 1 < W)
      next.push_back(&ob[i][j + 1]);
    if (n1 && n2)
      next.push_back(&ob[i - 1][j - 1]);
    if (n2 && n3)
      next.push_back(&ob[i + 1][j - 1]);
    if (n3 && n4)
      next.push_back(&ob[i + 1][j + 1]);
    if (n4 && n1)
      next.push_back(&ob[i - 1][j + 1]);
  }
};

vec<ll> coun;
map<BFSOBJ *, int> bfs(BFSOBJ *start, BFSOBJ *end) {
  queue<BFSOBJ *> q;
  map<BFSOBJ *, int> depth;
  q.push(start);
  depth[start] = 0;
  while (!q.empty()) {
    BFSOBJ *now = q.front();
    q.pop();
    for (const auto &next : now->next) {
      if (depth.end() == depth.find(next)) {
        depth[next] = depth[now] + 1;
        coun[next->x] = now->x;
        q.push(next);
      }
    }
  }
  return depth;
}
#pragma endregion

void solve(long long N, long long M, std::vector<long long> A,
           std::vector<long long> B) {
  vec<BFSOBJ> G(N);
  coun.resize(N + 10);
  fill(ALL(coun), -1);
  REP(i, M) {
    A[i]--;
    B[i]--;
    G[A[i]].x = A[i];
    G[B[i]].x = B[i];
    G[A[i]].next.push_back(&G[B[i]]);
    G[B[i]].next.push_back(&G[A[i]]);
  }
  bfs(&G[0], nullptr);
  FOR(i, N, 1) {
    if (coun[i] == -1) {
      cout << "No\\n";
      return;
    }
  }
  cout << "Yes\\n";
  FOR(i, N, 1) { cout << coun[i] + 1 << el; }
}


Error: 0

Fixed submission:

#pragma region Macros
#include <bits/stdc++.h>
using namespace std;
#define REP(i, n) for (int i = 0, i##_len = (n); i < i##_len; ++i)
#define REPR(i, n) for (int i = (n); i >= 0; --i)
#define FOR(i, n, m) for (int i = (m), i##_len = (n); i < i##_len; ++i)
#define EACH(i, v) for (const auto &i : v)
#define ALL(x) (x).begin(), (x).end()
#define ALLR(x) (x).rbegin(), (x).rend()
template <class T> bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T> bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
template <class Value> using vec = vector<Value>;
using ll = long long;
using P = pair<long long, long long>;
#define fi first
#define se second
#define el endl
#pragma endregion

const string YES = "Yes";

void Main();
void solve(long long N, long long M, std::vector<long long> A,
           std::vector<long long> B);

int main() {
  std::cin.tie(nullptr);
  std::cout << std::fixed << std::setprecision(15);
  Main();
  return 0;
}

void Main() {
  long long N;
  scanf("%lld", &N);
  long long M;
  scanf("%lld", &M);
  std::vector<long long> A(M);
  std::vector<long long> B(M);
  for (int i = 0; i < M; i++) {
    scanf("%lld", &A[i]);
    scanf("%lld", &B[i]);
  }
  solve(N, M, std::move(A), std::move(B));
}

#pragma region bfs
#define BFSMAP vector<vector<BFSOBJ>>
struct BFSOBJ {
  ll x;
  ll y;
  vector<BFSOBJ *> next;
  bool is(const BFSOBJ *obj) { return x == obj->x && y == obj->y; }
  void set4(BFSMAP &ob, int i = -1, int j = -1) {
    if (j < 0 || i < 0) {
      i = x;
      j = y;
    }
    int H = ob.size();
    int W = ob[0].size();
    if (i - 1 >= 0)
      next.push_back(&ob[i - 1][j]);
    if (j - 1 >= 0)
      next.push_back(&ob[i][j - 1]);
    if (i + 1 < H)
      next.push_back(&ob[i + 1][j]);
    if (j + 1 < W)
      next.push_back(&ob[i][j + 1]);
  }
  void set8(BFSMAP &ob, int i = -1, int j = -1) {
    if (j < 0 || i < 0) {
      i = x;
      j = y;
    }
    int H = ob.size();
    int W = ob[0].size();
    bool n1, n2, n3, n4;
    if (n1 = i - 1 >= 0)
      next.push_back(&ob[i - 1][j]);
    if (n2 = j - 1 >= 0)
      next.push_back(&ob[i][j - 1]);
    if (n3 = i + 1 < H)
      next.push_back(&ob[i + 1][j]);
    if (n4 = j + 1 < W)
      next.push_back(&ob[i][j + 1]);
    if (n1 && n2)
      next.push_back(&ob[i - 1][j - 1]);
    if (n2 && n3)
      next.push_back(&ob[i + 1][j - 1]);
    if (n3 && n4)
      next.push_back(&ob[i + 1][j + 1]);
    if (n4 && n1)
      next.push_back(&ob[i - 1][j + 1]);
  }
};

ll coun[100005];
map<BFSOBJ *, int> bfs(BFSOBJ *start, BFSOBJ *end) {
  queue<BFSOBJ *> q;
  map<BFSOBJ *, int> depth;
  q.push(start);
  depth[start] = 0;
  while (!q.empty()) {
    BFSOBJ *now = q.front();
    q.pop();
    for (const auto &next : now->next) {
      if (depth.end() == depth.find(next)) {
        depth[next] = depth[now] + 1;
        coun[next->x] = now->x;
        q.push(next);
      }
    }
  }
  return depth;
}
#pragma endregion

void solve(long long N, long long M, std::vector<long long> A,
           std::vector<long long> B) {
  vec<BFSOBJ> G(N);
  fill(coun, coun + N + 100, -1);
  REP(i, M) {
    A[i]--;
    B[i]--;
    G[A[i]].x = A[i];
    G[B[i]].x = B[i];
    G[A[i]].next.push_back(&G[B[i]]);
    G[B[i]].next.push_back(&G[A[i]]);
  }
  bfs(&G[0], nullptr);
  FOR(i, N, 1) {
    if (coun[i] == -1) {
      cout << "No\\n";
      return;
    }
  }
  cout << "Yes\\n";
  FOR(i, N, 1) { cout << coun[i] + 1 << el; }
}