#include<bits/stdc++.h>
using namespace std;
#define fall(i,a,n) for(int i=a;i<=n;i++)
#define rfall(i,a,n) for(int i=a;i>=n;i--)
#define pb push_back
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
const int MAXN=4e3+10;
const int MAXL=22;
typedef tuple<int,int,int> trio;
typedef pair<int,int> pii;
int n,m;
char arr[MAXN][MAXN];
bool z[MAXN][MAXN];
int32_t main(){
std::ios_base::sync_with_stdio(false);
cin.tie(NULL);
//freopen("disrupt.in","r",stdin);
//freopen("disrupt.out","w",stdout);
cin>>n>>m;
fall(i,1,n)
fall(j,1,m) cin>>arr[i][j];
deque<trio> fila;
fila.pb({1,1,1});
z[1][1]=1;
int ans=0;
while(!fila.empty()){
auto [d,a,b]=fila.front(); fila.pop_front();
ans=d;
fall(x,-1,1)
fall(y,-1,1){
if(abs(x)+abs(y)!=1) continue;
int nx=x+a,ny=y+b;
if(arr[nx][ny]!='R' && arr[nx][ny]!='F') continue;
if(z[nx][ny]) continue;
if(arr[nx][ny]==arr[a][b]){
z[nx][ny]=1;
fila.push_front({d,nx,ny});
}
else{
z[nx][ny]=1;
fila.pb({d+1,nx,ny});
}
}
}
cout<<ans<<"\n";
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |