Submission #1265049

#TimeUsernameProblemLanguageResultExecution timeMemory
1265049canhnam357Tracks in the Snow (BOI13_tracks)C++20
100 / 100
548 ms112120 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; vector<string> a(n); for (string &s : a) cin >> s; vector<vector<int>> d(n, vector<int>(m, INT_MAX)); deque<pair<int, int>> dq; dq.emplace_front(0, 0); d[0][0] = 1; int dx[4] = {0, 0, -1, 1}; int dy[4] = {-1, 1, 0, 0}; while (!dq.empty()) { auto [x, y] = dq.front(); dq.pop_front(); for (int k = 0; k < 4; k++) { int r = x + dx[k], c = y + dy[k]; if (min({r, c, n - r - 1, m - c - 1}) >= 0) { if (a[r][c] == '.') continue; if (a[r][c] == a[x][y]) { int nd = d[x][y]; if (nd < d[r][c]) { d[r][c] = nd; dq.emplace_front(r, c); } } else { int nd = d[x][y] + 1; if (nd < d[r][c]) { d[r][c] = nd; dq.emplace_back(r, c); } } } } } int ans = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] != '.') ans = max(ans, d[i][j]); } } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...