Submission #1000538

#TimeUsernameProblemLanguageResultExecution timeMemory
1000538HUYHDUVETracks in the Snow (BOI13_tracks)C++14
100 / 100
456 ms124064 KiB
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> pii; #define ff first #define sc second int const INF = 2e9; vector<int> di = {1, -1, 0, 0}, dj = {0, 0, 1, -1}; int main(){ // freopen("A.IN", "r", stdin); // freopen("A.OUT", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(nullptr); int n, m; cin >> n >> m; vector<string> grid(n); for(auto &it : grid) cin >> it; vector<vector<int>> min_d(n, vector<int> (m, INF)); min_d[0][0] = 1; deque<pii> q; q.push_back({0,0}); int ans = 0; while(!q.empty()){ pii cur = q.front(); q.pop_front(); ans = max(ans, min_d[cur.ff][cur.sc]); for(int i = 0; i < 4; i++){ int ni = cur.ff + di[i]; int nj = cur.sc + dj[i]; if(ni < 0 || ni >= n || nj < 0 || nj >= m) continue; if(min_d[ni][nj] != INF || grid[ni][nj] == '.') continue; if(grid[cur.ff][cur.sc] == grid[ni][nj]){ min_d[ni][nj] = min_d[cur.ff][cur.sc]; q.push_front({ni, nj}); } else { min_d[ni][nj] = min_d[cur.ff][cur.sc] + 1; q.push_back({ni, nj}); } } } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...