제출 #1289520

#제출 시각아이디문제언어결과실행 시간메모리
1289520bobtheguyTracks in the Snow (BOI13_tracks)C++20
100 / 100
818 ms173784 KiB
#include<bits/stdc++.h> #define pll pair<int,int> using namespace std; const int dx[4]={1,-1,0,0}; const int dy[4]={0,0,-1,1}; int a[4001][4001],cnt=0,x,y,h,w,i,j; char c; int d[4001][4001]; bool visited[4001][4001]; deque<pll> dq; signed main(){ cin.tie(0)->sync_with_stdio(0); cin>>h>>w; for (i=1;i<=h;i++){ for (j=1;j<=w;j++){ cin>>c; if (c=='R'){ a[i][j]=1; } else if (c=='F'){ a[i][j]=2; } else a[i][j]=0; d[i][j]=1e9; } } d[1][1]=0; dq.push_front({1,1}); while (!dq.empty()){ auto [i,j]=dq.front(); dq.pop_front(); if (visited[i][j]) continue; visited[i][j]=1; for (int k=0;k<4;k++){ x=dx[k]+i;y=dy[k]+j; if (x<0||y<0||x>h||y>w) continue; if (a[i][j]==0||a[x][y]==0) continue; int w; if (a[i][j]==a[x][y]) w=0; else w=1; if (d[x][y]>d[i][j]+w){ d[x][y]=d[i][j]+w; if (w==0) dq.push_front({x,y}); else dq.push_back({x,y}); } } } int ans=0; for (i=1;i<=h;i++){ for (j=1;j<=w;j++){ if (d[i][j]<1e9) ans=max(ans,d[i][j]); } } cout<<ans+1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...