Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: boss
Problemset: Croissant Beyond Peaks
Language: cpp
Time: 0.004 second
Submitted On: 2026-01-31 14:13:09
#include<bits/stdc++.h>
using namespace std;
char arr[2+5][500+5];
bool vis[2+5][500+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;
}
}
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>1||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;
vis[xx][yy]=true;
}
if(ans==1)
{
break;
}
}
}
if(ans==1)
{
cout<<"Yes"<<"\n";
}
else
{
cout<<"No"<<"\n";
}
}
return 0;
}