Submission

Status:

----------

Subtask/Task Score:

0/100

Score: 0

User: boss

Problemset: Croissant Beyond Peaks

Language: cpp

Time: 0.005 second

Submitted On: 2026-01-31 14:09:43

#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;
			}
		}
		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;
				}						
			}
			if(ans==1)
			{
				break;
			}					
		}			
			if(ans==1)
			{
				cout<<"Yes"<<"\n";
			}
			else
			{
				cout<<"No"<<"\n";
			}
	}
	
	
	
	

		
	
	
	
	
	
	
	return 0;
}