Submission #1019201

#TimeUsernameProblemLanguageResultExecution timeMemory
1019201LuvidiTracks in the Snow (BOI13_tracks)C++17
100 / 100
655 ms158784 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll, ll> #define pii pair<int, int> #define fs first #define sc second #define pb push_back void solve() { int n,m; cin>>n>>m; int a[n][m]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ char c; cin>>c; if(c=='F')a[i][j]=0; else if(c=='R')a[i][j]=1; else a[i][j]=-1; } } int dist[n][m],dx[4]={-1,1,0,0},dy[4]={0,0,-1,1},ans=0; memset(dist,-1,sizeof(dist)); deque<pii> dq; dist[0][0]=0; dq.push_back({0,0}); while(!dq.empty()){ auto[r,c]=dq.front(); dq.pop_front(); for(int i=0;i<4;i++){ int r2=r+dx[i],c2=c+dy[i]; if(r2>=0&&c2>=0&&r2<n&&c2<m){ if(a[r2][c2]==-1||dist[r2][c2]!=-1)continue; if(a[r2][c2]==a[r][c]){ dist[r2][c2]=dist[r][c]; dq.push_front({r2,c2}); }else{ dist[r2][c2]=dist[r][c]+1; ans=max(ans,dist[r2][c2]); dq.push_back({r2,c2}); } } } a[r][c]=-1; } cout<<ans+1; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...