Submission #1208142

#TimeUsernameProblemLanguageResultExecution timeMemory
1208142timeflewTracks in the Snow (BOI13_tracks)C++20
100 / 100
489 ms118948 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second #define all(x) x.begin(), x.end() const int mxN=4e3; int d[mxN][mxN], h, w; char c[mxN][mxN]; int dx[4]={0, 0, 1, -1}; int dy[4]={1, -1, 0, 0}; bool check(int x, int y) { return (x>=0&&x<h&&y>=0&&y<w&&c[x][y]!='.'); } int main() { ios::sync_with_stdio(0); cin.tie(0); d[0][0]=1; cin>>h>>w; for(int i=0; i<h; i++) { for(int j=0; j<w; j++) { cin>>c[i][j]; } } deque<pair<int, int>> dq; dq.push_back({0, 0}); int ans=0; while(dq.size()) { auto [x, y]=dq.front(); dq.pop_front(); ans=max(ans, d[x][y]); // cout<<x<<' '<<y<<' '<<d[x][y]<<"\n"; for(int i=0; i<4; i++) { int X=x+dx[i], Y=y+dy[i]; if(check(X, Y)&&d[X][Y]==0) { if(c[X][Y]==c[x][y]) { d[X][Y]=d[x][y]; dq.push_front({X, Y}); } else { d[X][Y]=d[x][y]+1; dq.push_back({X, Y}); } } } } cout<<ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...