Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: Monasm
Problemset: Croissant Beyond Peaks
Language: cpp
Time: 0.014 second
Submitted On: 2025-07-15 10:11:55
#include <bits/stdc++.h>
using namespace std;
int gx[] = {1,0,-1,0};
int gy[] = {0,1,0,-1};
int main(){
int t;cin>>t;
while(t--){
int n,con=0;cin>>n;
vector<string> arr;
vector<vector<int>> vis(2,vector<int>(n,0));
for(int i=0;i<2;i++){
string s;cin>>s;
arr.push_back(s);
}
for(int i=0;i<2;i++){
for(int j=0;j<n;j++){
if(arr[i][j]=='S'){
queue<pair<int,int>> q;
q.push({i,j});
vis[i][j]=1;
while(!q.empty()){
int nx = q.front().first;
int ny = q.front().second;
q.pop();
if(arr[nx][ny]=='T'){
cout<<"Yes\n";
con=1;
break;
}
for(int k=0;k<4;k++){
int x= gx[k]+nx;
int y= gy[k]+ny;
if(0<=x&&x<2&&0<=y&&y<n&&vis[x][y]==0&&arr[x][y]!='#'){
vis[x][y]=1;
q.push({x,y});
}
}
}
}
}
}
if(!con){
cout<<"No\n";
}
}
}