➤ Problem Link : 510B. Fox And Two Dots
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int lc[]={-1,1,0,0};
int rc[]={0,0,-1,1};
char arr[60][60];
bool visited[60][60];
bool func(int x,int y,char color,int px,int py,int n,int m)
{
for(int i=0;i<4;i++)
{
int p=x+lc[i];
int q=y+rc[i];
if(p>=n || p<0 || q>=m || q<0)
continue;
if(!visited[p][q] && arr[p][q]==color)
{
visited[p][q]=1;
if(func(p,q,color,x,y,n,m))
return 1;
}
else if(visited[p][q] && (p!=px || q!=py) && arr[p][q]==color)
return 1;
}
return 0;
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cin>>arr[i][j];
}
memset(visited,0,sizeof(visited));
bool flag=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(!visited[i][j])
{
visited[i][j]=1;
if(func(i,j,arr[i][j],-1,-1,n,m))
{
flag=1;
break;
}
}
}
if(flag)
break;
}
if(flag)
cout<<"Yes";
else
cout<<"No";
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
