Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: masteraun

Problemset: Croissant Beyond Peaks

Language: cpp

Time: 0.010 second

Submitted On: 2026-07-30 12:12:51

#include <bits/stdc++.h>
using namespace std;
int di[] = {-1, 1, 0, 0};
int dj[] = {0, 0, 1, -1};
bool y = false;
int s;
void dfs(int si, int sj, vector<vector<char>> &grid, vector<vector<bool>> &visited)
{

    if (si < 0 || sj < 0 || si >= 2 || sj >= grid[0].size() || grid[si][sj] == '#')
    {
        return;
    }

    if (visited[si][sj])
    {
        return;
    }
    // cout << si << " " << sj << "\n";
    if (grid[si][sj] == 'T')
    {
        y = true;
    }
    visited[si][sj] = true;

    for (int i = 0; i < 4; i++)
    {
        int ni = di[i] + si;
        int nj = dj[i] + sj;
        dfs(ni, nj, grid, visited);
    }
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int q;
    cin >> q;
    for (int i = 0; i < q; i++)
    {
        // int s;
        cin >> s;
        vector<vector<char>> grid(2, vector<char>(s));
        vector<vector<bool>> visited(2, vector<bool>(s, false));
        int si, sj;
        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < s; j++)
            {
                cin >> grid[i][j];
                if (grid[i][j] == 'S')
                {
                    si = i;
                    sj = j;
                }
            }
        }
        // cout << si << " " << sj << "\n";
        //  bool y = false;
        // cout << grid.size() << " " << grid[0].size() << "\n\n";
        dfs(si, sj, grid, visited);
        if (y)
        {
            cout << "Yes";
        }
        else
        {
            cout << "No";
        }
        cout << "\n";
        y = false;
    }
}