제출 #1279933

#제출 시각아이디문제언어결과실행 시간메모리
1279933hanguyendanghuyTracks in the Snow (BOI13_tracks)C++20
100 / 100
618 ms223988 KiB
#include <bits/stdc++.h> using namespace std; #define yes cout<<"YES"<<'\n' #define no cout<<"NO"<<'\n' #define si size() #define fi first #define se second #define ll long long #define sr sort #define pb push_back const ll MAXN=4e3+5,INF=1e9,MOD=1e9+7; ll n,m,i,j,k,p,dem,t,sum,ans,dist[MAXN][MAXN],b[4]={0,0,1,-1},c[4]={1,-1,0,0},timego; string s[MAXN]; void dfs(ll stx,ll sty){ deque<pair<ll,ll>> q; q.pb({stx,sty}); while(q.size()){ auto k=q.front();q.pop_front(); for(ll i=0;i<4;i++){ ll x=k.fi+b[i],y=k.se+c[i]; if(s[x][y-1]=='.') continue; if(x>0&&y>0&&x<=n&&y<=m&&dist[x][y]>dist[k.fi][k.se]+(s[x][y-1]!=s[k.fi][k.se-1])){ dist[x][y]=dist[k.fi][k.se]+(s[x][y-1]!=s[k.fi][k.se-1]); if(!(s[x][y-1]!=s[k.fi][k.se-1]))q.push_front({x,y}); else q.pb({x,y}); } } } } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr);cout.tie(0); // freopen("test.INP","r",stdin); // freopen("test.OUT","w",stdout); cin>>n>>m; for(i=1;i<=n;i++){ cin>>s[i]; for(j=1;j<=m;j++) dist[i][j]=INF; } dist[1][1]=1; dfs(1,1); for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ if(dist[i][j]==INF) continue; ans=max(ans,dist[i][j]); } } cout<<ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...