Submission #1231017

#TimeUsernameProblemLanguageResultExecution timeMemory
1231017glupanTracks in the Snow (BOI13_tracks)C++20
100 / 100
399 ms118992 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const int INF = 1e9; const int MOD = 1000000007; const int MAX_N = 1e5 + 5; int dx[4]{1,-1,0,0},dy[4]{0,0,1,-1}; int dist[4005][4005]; int n,m,ans; string snow[4005]; bool inside(int x, int y) { if(x >= 0 and x < n and y >= 0 and y < m and snow[x][y] != '.') return true; return false; } void solve() { cin >> n >> m; for(int i=0; i<n; i++) cin >> snow[i]; deque<pair<int,int>>q; q.push_back({0,0}); dist[0][0] = 1; while(!q.empty()) { pair<int,int> cur = q.front(); q.pop_front(); ans = max(ans,dist[cur.first][cur.second]); for(int i=0; i<4; i++) { int x = cur.first+dx[i], y = cur.second+dy[i]; if(inside(x,y) and dist[x][y] == 0) { if(snow[cur.first][cur.second] == snow[x][y]) { q.push_front({x,y}); dist[x][y] = dist[cur.first][cur.second]; } else { q.push_back({x,y}); dist[x][y] = dist[cur.first][cur.second] + 1; } } } } cout << ans << endl; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); //freopen("feast.in","r",stdin); //freopen("feast.out","w",stdout); int t=1; while(t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...