Submission #1295977

#TimeUsernameProblemLanguageResultExecution timeMemory
1295977linussTracks in the Snow (BOI13_tracks)C++20
100 / 100
758 ms120184 KiB
#include <bits/stdc++.h> using namespace std; int main(){ int n, m; cin >> n >> m; vector<string> grid(n); int dx[4] = {1, -1, 0, 0}; int dy[4] = {0, 0, 1, -1}; for (int i = 0; i<n; i++){ cin >> grid[i]; } vector<vector<int>> dist(n, vector<int>(m, INT_MAX)); dist[0][0]=0; deque<pair<int, int>> dq; dq.push_front({0, 0}); while (!dq.empty()){ auto [x, y] = dq.front(); dq.pop_front(); for (int k = 0; k<4; k++){ int nx = x + dx[k]; int ny = y + dy[k]; if (nx<0 || ny<0 || nx>=n || ny >=m || grid[nx][ny]=='.') continue; int w = (grid[x][y]!=grid[nx][ny]); if (dist[x][y] + w < dist[nx][ny]){ dist[nx][ny] = dist[x][y] + w; if (!w){ dq.push_front({nx, ny}); } else dq.push_back({nx, ny}); } } } int ma = 0; for (auto i : dist){ for (auto j : i){ if (j!=INT_MAX) ma = max(ma, j); } } cout << ma+1 << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...