Submission #332533

#TimeUsernameProblemLanguageResultExecution timeMemory
332533CiafrinoTracks in the Snow (BOI13_tracks)C++17
100 / 100
623 ms131048 KiB
#include<bits/stdc++.h> using namespace std; int main() { cout.tie(nullptr)->sync_with_stdio(false); int H, W; cin >> H >> W; vector<string> grid(H); for (string& S : grid) cin >> S; vector<vector<int>> mindist(H, vector<int>(W, -1)); deque<array<int, 2>> bfs = {{0, 0}}; vector<int> dx = {1, 0, -1, 0}; vector<int> dy = {0, 1, 0, -1}; auto check = [&](int a, int b) -> bool { if (a < 0 || a >= H || b < 0 || b >= W || grid[a][b] == '.') return false; return true; }; mindist[0][0] = 1; int res = 0; while (!bfs.empty()) { auto [u, v] = bfs.front(); bfs.pop_front(); res = max(res, mindist[u][v]); for (int d = 0; d < 4; ++d) { int a = u + dx[d], b = v + dy[d]; if (!check(a, b)) continue; if (mindist[a][b] == -1) { int prev = mindist[u][v]; if (grid[u][v] == grid[a][b]) { mindist[a][b] = prev; bfs.push_front({a, b}); } else { mindist[a][b] = 1 + prev; bfs.push_back({a, b}); } } } } cout << res << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...