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