Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: kavin8888
Problemset: Croissant Beyond Peaks
Language: cpp
Time: 0.011 second
Submitted On: 2025-10-22 22:54:57
#include <bits/stdc++.h>
using namespace std;
#define MAX_ROW 2
#define MAX_COL 500
vector<vector<bool>> vis(MAX_ROW, vector<bool>(MAX_COL));
vector<string> a(MAX_ROW);
int n, end_row, end_col;
bool isInRange(int row, int col) {
return (0 <= row && row < MAX_ROW && 0 <= col && col < n);
}
bool search(int row, int col) {
if (row == end_row && col == end_col) {
return true;
}
if (isInRange(row + 1, col) && a[row + 1][col] != '#' && !vis[row + 1][col]) {
vis[row + 1][col] = true;
if (search(row + 1, col)) {
return true;
}
}
if (isInRange(row - 1, col) && a[row - 1][col] != '#' && !vis[row - 1][col]) {
vis[row - 1][col] = true;
if (search(row - 1, col)) {
return true;
}
}
if (isInRange(row, col + 1) && a[row][col + 1] != '#' && !vis[row][col + 1]) {
vis[row][col + 1] = true;
if (search(row, col + 1)) {
return true;
}
}
if (isInRange(row, col - 1) && a[row][col - 1] != '#' && !vis[row][col - 1]) {
vis[row][col - 1] = true;
if (search(row, col - 1)) {
return true;
}
}
return false;
}
int main() {
int q;
cin >> q;
while (q--) {
cin >> n;
int start_row, start_col;
for (int i = 0; i < MAX_ROW; i++) {
cin >> a[i];
for (int j = 0; j < n; j++) {
if (a[i][j] == 'S') {
start_row = i;
start_col = j;
} else if (a[i][j] == 'T') {
end_row = i;
end_col = j;
}
vis[i][j] = false;
}
}
vis[start_row][start_col] = true;
cout << (search(start_row, start_col) ? "Yes\n" : "No\n");
}
return 0;
}