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 11:50:26

#include <bits/stdc++.h>
using namespace std;
int di[] = {-1, 1, 0, 0};
int dj[] = {0, 0, 1, -1};
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));
        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;
                }
            }
        }
        queue<pair<int, int>> q;
        bool y = false;
        q.push({si, sj});
        while (!q.empty())
        {
            auto curr = q.front();
            q.pop();

            if (grid[curr.first][curr.second] == 'T')
            {
                y = true;
            }

            for (int i = 0; i < 4; i++)
            {
                int ni = di[i] + curr.first;
                int nj = dj[i] + curr.second;

                if (ni >= 0 && nj >= 0 && ni < 2 && nj < s && !visited[ni][nj] && grid[ni][nj] != '#')
                {
                    visited[ni][nj] = true;
                    q.push({ni, nj});
                }
            }
        }
        if (y)
        {
            cout << "Yes";
        }
        else
        {
            cout << "No";
        }
        cout << "\n";
    }
}