Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: masteraun
Problemset: Croissant Beyond Peaks
Language: cpp
Time: 0.011 second
Submitted On: 2026-07-30 11:50:12
#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";
}
}