Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: modx9572

Problemset: Croissant Beyond Peaks

Language: cpp

Time: 0.021 second

Submitted On: 2025-12-16 20:28:15

#include <bits/stdc++.h>
using namespace std;
int main(){
    int q;
    cin >> q;
    for(int i=0;i<q;i++){
        int m;
        cin >> m;
        int n=2;
        string s[2];
        cin >> s[0];
        cin >> s[1];
        queue<pair<int,int>> qu;
        bool visited[n][m];
        int dx[4]={-1,1,0,0};
        int dy[4]={0,0,-1,1};
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                visited[i][j]=false;
            }
        }
        int a,b;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(s[i][j]=='S'){
                    a=i;
                    b=j;
                }
            }
        }
        int a1,b1;
        bool ok=false;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(s[i][j]=='T'){
                    a1=i;
                    b1=j;
                }
            }
        }        
        qu.push({a,b});
        while(!qu.empty()){
            auto[x,y]=qu.front();
            qu.pop();
            if(visited[x][y]){
                continue;
            }
            visited[x][y]=true;
            if(s[x][y]=='T'){
                ok=true;
            }
            for(int k=0;k<4;k++){
                int tox=x+dx[k];
                int toy=y+dy[k];
                if(tox<0||toy<0||tox>n-1||toy>m-1){
                    continue;
                }
                if(s[tox][toy]=='#'||visited[tox][toy]==true){
                    continue;
                }
                qu.push({tox,toy});
            }         
        }
        if(ok==true){
            cout<<"Yes\n";

        }
        else if(ok==false){
            cout<<"No\n";
        }
    }
}