題目鏈接:Jigglypuff
我們只需要找到一個
1x
x2
這樣的結構,那麼就存在兩條相同的路。
所以題目要求三條路,只要有兩個這樣的結構可以互相到達即可。
但是要注意如果存在
1xy
xy2
1x
xy
y2
這樣的結構也是可以的。
AC代碼:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=3e3+10;
int n,m,s[N][N],dp[N][N],res; char g[N][N];
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++) scanf("%s",g[i]+1);
for(int i=1;i<n;i++) for(int j=1;j<m;j++)
if(g[i+1][j]==g[i][j+1]) s[i][j]=dp[i][j]=1;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
for(int i=1;i<n;i++) for(int j=1;j<m;j++) if(dp[i][j]){
if(dp[i+1][j]||dp[i][j+1]) return puts("YES"),0;
}
for(int i=2;i<=n;i++) for(int j=2;j<=m;j++)
if(dp[i][j]&&s[i-1][j-1]) return puts("YES"),0;
puts("NO");
return 0;
}