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