Submission
Status:
----------
Subtask/Task Score:
0/100
Score: 0
User: boss
Problemset: Croissant Beyond Peaks
Language: cpp
Time: 0.010 second
Submitted On: 2026-01-31 13:46:50
#include<bits/stdc++.h>
using namespace std;
char arr[2+5][500+5];
bool vis[2+5][200+5];
int dx[]={1,-1,0,0};
int dy[]={0,0,-1,1};
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
string s1,s2;
int n;
int question;
int mx=0;
queue<pair<int,int>> q;
int ans=0;
cin>>question;
for(int l=0;l<question;l++)
{
// vis[2+5][200+5]=false;//how to reset vis to false
ans=0;
cin>>n;
mx=max(mx,n);
cin>>s1;
cin>>s2;
for(int i=0;i<2;i++)
{
for(int j=0;j<mx;j++)
{
arr[i][j]='0';
vis[i][j]=false;
}
}
for(int i=0;i<n;i++)
{
arr[0][i]=s1[i];
// if(s1[i]=='S')
// {
// q.push({0,i});
// vis[0][i]=true;
// }
arr[1][i]=s2[i];
// if(s2[i]=='S')
// {
// q.push({1,i});
// vis[1][i]=true;
// }
}
for(int i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
if((arr[i][j]=='.'||arr[i][j]=='S')&&vis[i][j]==false)
{
q.push({i,j});
vis[i][j]=true;
while(!q.empty())
{
int x=q.front().first;
int y=q.front().second;
q.pop();
for(int k=0;k<4;k++)
{
int xx=x+dx[k];
int yy=y+dy[k];
if(xx<0||yy<0||xx>2||yy>n-1||vis[xx][yy]==true)
{
continue;
}
if(arr[xx][yy]=='.'&&vis[xx][yy]==false)
{
vis[xx][yy]=true;
q.push({xx,yy});
}
if(arr[xx][yy]=='T'&&vis[xx][yy]==false)
{
ans=1;
}
}
if(ans==1)
{
break;
}
}
}
}
}
if(ans==1)
{
cout<<"yes"<<"\n";
}
else
{
cout<<"No"<<"\n";
}
}
return 0;
}