제출 #1250508

#제출 시각아이디문제언어결과실행 시간메모리
1250508d19nTracks in the Snow (BOI13_tracks)C++20
8.85 / 100
2097 ms221056 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; #define sz(x) (int)(x).size() #define all(x) begin(x), end(x) #define rep(i, a, b) for(int i = a; i < (b); ++i) #define inf __builtin_inf() constexpr int dy[] = {1, -1, 0, 0}; constexpr int dx[] = {0, 0, 1, -1}; constexpr int N = 4e3 + 5; char grid[N][N]; bool vis[N][N]; void solve(){ int h, w; cin >> h >> w; for(int i = 0; i < h; i++){ for(int j = 0; j < w; j++){ cin >> grid[i][j]; } } priority_queue<tuple<int, int, int>> q; q.push({-1, 0, 0}); int mx = 1; while(sz(q)) { auto [cost, i, j] = q.top(); q.pop(); if(vis[i][j]) continue; vis[i][j] = true; mx = max(mx, -cost); for(int k = 0; k < 4; k++){ int y = dy[k] + i, x = dx[k] + j; if(y < 0 || x < 0 || y == h || x == w || vis[y][x]) continue; q.push({cost - (grid[y][x] != grid[i][j]), y, x}); } } cout << mx; } int main(){ ios_base::sync_with_stdio(false), cin.tie(NULL); // int t; cin >> t; while(t--) solve(), cout << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...