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;
}