제출 #914932

#제출 시각아이디문제언어결과실행 시간메모리
914932SchillingWTracks in the Snow (BOI13_tracks)C++17
100 / 100
1046 ms100244 KiB
#include <iostream> #include <queue> int main() { int N, M; std::cin >> N >> M; char g[N * M]; for (int i = 0; i < N * M; i++) std::cin >> g[i]; int D[4] {-1, -M, 1, M}; int d[N * M]; std::fill(d, d + N * M, -1); std::queue<int> q, pq; q.push(0); d[0] = 1; while (!q.empty() || !pq.empty()) { int p; if (!pq.empty()) p = pq.front(), pq.pop(); else p = q.front(), q.pop(); for (int i : D) { if (p + i >= 0 && p + i < N * M && !(i == -1 && p % M == 0) && !(i == 1 && p % M == M - 1)) { if (g[p + i] != '.' && d[p + i] == -1) { if (g[p] == g[p + i]) pq.push(p + i), d[p + i] = d[p]; else q.push(p + i), d[p + i] = d[p] + 1; } } } } int w = 0; for (int i = 0; i < N * M; i++) if (d[i] > w) w = d[i]; std::cout << w << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...