Submission #1198820

#TimeUsernameProblemLanguageResultExecution timeMemory
1198820Francisco_MartinTracks in the Snow (BOI13_tracks)C++20
100 / 100
864 ms405228 KiB
#include <bits/stdc++.h> using namespace std; #define debug(v) cerr<<#v" = "<<(v)<<"\n"; #define debugvec(v) do{cerr<<#v<<" = [";for(int i=0;i<v.size();i++)cerr<<v[i]<<(i==v.size()-1?"":", ");cerr<<"]\n";}while(0); #define debugvecp(v) do{cerr<<#v<<" = [";for(int i=0;i<v.size();i++)cerr<<"[ "<<v[i].fst<<" "<<v[i].snd<<" ]"<<(i==v.size()-1?"":", ");cerr<<"]\n";}while(0); #define fst first #define snd second #define gcd(x,y) __gcd(x,y) #define OnlineJudge(s) freopen((s".in"),"r",stdin); freopen((s".out"),"w",stdout); #define fastIO() cin.tie(0)->sync_with_stdio(0);cin.exceptions(cin.failbit); #define boolsolve() cout<<(solve()?"Yes":"No"); using ll=long long; using ull=unsigned long long; using pll=pair<ll,ll>; using vll=vector<ll>; using vpll=vector<pll>; using vvll=vector<vll>; const ll INF=1e12; const ll MOD=1e9+7; const ll MAXN=1e6+1; ll dx[]={1,-1,0,0}, dy[]={0,0,1,-1}; void solve(){ ll h, w, ans=1; string s; deque<array<ll,3>> dq; cin >> h >> w; vvll B(h,vll(w,0)); vector<vector<char>> A(h,vector<char>(w)); for(int i=0; i<h; i++){ cin >> s; for(int j=0; j<w; j++) A[i][j]=s[j]; } dq.push_front({0,0,1}); while(!dq.empty()){ auto[x,y,v]=dq.front(); dq.pop_front(); if(x<0 || x>=h || y<0 || y>=w || A[x][y]=='.' || B[x][y]) continue; ans=max(ans,v); B[x][y]=v; for(int i=0; i<4; i++){ ll nx=x+dx[i], ny=y+dy[i]; if(nx<0 || nx>=h || ny<0 || ny>=w || A[nx][ny]=='.' || B[nx][ny]) continue; if(A[x][y]!=A[nx][ny]) dq.push_back({nx,ny,v+1}); else dq.push_front({nx,ny,v}); } } cout << ans; } int main(){ fastIO(); //OnlineJudge("") ll t=1; //cin >> t; while(t--){ solve(); //cout << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...