Submission #1299802

#TimeUsernameProblemLanguageResultExecution timeMemory
1299802s3yoonparkTracks in the Snow (BOI13_tracks)C++20
100 / 100
608 ms162436 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") int dy[4] = {-1, 0, 1, 0}; int dx[4] = {0, 1, 0, -1}; void solve() { int H, W; cin >> H >> W; vector grid(H + 1, vector(W + 1, '.')); for (int i = 1; i <= H; i++) { for (int j = 1; j <= W; j++) { cin >> grid[i][j]; } } deque<pair<int,int>> dq; vector dist(H + 1, vector(W + 1, 0)); vector vis(H + 1, vector(W + 1, false)); int ans = 1; dist[1][1] = 1; dq.emplace_back(1, 1); while (!dq.empty()) { auto [y, x] = dq.front(); dq.pop_front(); if (vis[y][x]) continue; vis[y][x] = true; ans = max(ans, dist[y][x]); for (int k = 0; k < 4; k++) { int ny = y + dy[k], nx = x + dx[k]; if (ny < 1 || ny > H || nx < 1 || nx > W || grid[ny][nx] == '.' || vis[ny][nx]) continue; if (grid[y][x] != grid[ny][nx]) { dist[ny][nx] = dist[y][x] + 1; dq.emplace_back(ny, nx); } else { dist[ny][nx] = dist[y][x]; dq.emplace_front(ny, nx); } } } cout << ans << '\n'; } signed main() { ios_base::sync_with_stdio(0); cin.tie(nullptr); int tc = 1; // cin >> tc; while (tc--) solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...