제출 #374226

#제출 시각아이디문제언어결과실행 시간메모리
374226daduamTracks in the Snow (BOI13_tracks)C++17
100 / 100
1750 ms186944 KiB
#include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; vector<vector<char>> meadow(n, vector<char>(m)); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> meadow[i][j]; } } vector<vector<int>> d(n, vector<int>(m)); vector<vector<int>> used(n, vector<int>(m)); deque<pair<int, int>> q; q.push_front({0, 0}); used[0][0] = true; d[0][0] = 1; while (!q.empty()) { auto [r, c] = q.front(); q.pop_front(); static vector<pair<int, int>> dirs = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; for (auto [x, y] : dirs) { x += r, y += c; if (x >= 0 && x < n && y >= 0 && y < m && !used[x][y] && meadow[x][y] != '.') { if (meadow[r][c] != meadow[x][y]) { d[x][y] = d[r][c] + 1; q.push_back({x, y}); } else { d[x][y] = d[r][c]; q.push_front({x, y}); } used[x][y] = true; } } } int rv = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { rv = max(rv, d[i][j]); } } cout << rv << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...