Submission #1299788

#TimeUsernameProblemLanguageResultExecution timeMemory
1299788s3yoonparkTracks in the Snow (BOI13_tracks)C++20
0 / 100
179 ms143744 KiB
#include <bits/stdc++.h> using namespace std; #define int long long 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]; } } priority_queue<pair<int,pair<int,int>>, vector<pair<int,pair<int,int>>>, greater<pair<int,pair<int,int>>>> pq; vector dist(H + 1, vector(W + 1, (int)1E9)); vector vis(H + 1, vector(W + 1, false)); int ans = 1; dist[1][1] = 1; pq.push({0, {1,1}}); while (!pq.empty()) { auto [a, b] = pq.top(); pq.pop(); auto [y, x] = b; if (vis[y][x]) continue; vis[y][x] = true; ans = max(ans, a); 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] == '.') continue; if (dist[y][x] + (grid[y][x] == grid[ny][nx]) < dist[ny][nx]) { pq.push({dist[y][x] + (int)(grid[y][x] == grid[ny][nx]), {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...