萌新刚学c艹75分dfs求条(悬关 * 2)
查看原帖
萌新刚学c艹75分dfs求条(悬关 * 2)
660871
2011Andy楼主2023/7/31 15:04
#include <bits/stdc++.h>
#define int long long
using namespace std;
int T , n , k; 
char a[5][105];
int sx , sy;
int flag;
int mark[5][105];
void dfs(int x , int y){
	if(y >= n){
		flag = 1;
		return ;
	}
	if(flag || mark[x][y]) return ;
	if(mark[x][y + 1]) return ;
	mark[x][y] = 1;
	for(int i = x - 1 ; i <= x + 1 ; i++){
		if(i >= 1 && i <= 3 && a[i][y + 1] == '.' && a[i][y + 2] == '.' && a[i][y + 3] == '.'){
			dfs(i , y + 3);
		}
	}
}
signed main(){
	cin >> T;
	while(T--){
		memset(mark , 0 , sizeof(mark));
		flag = 0;
		cin >> n >> k;
		for(int i = 1 ; i <= 3 ; i++){
			for(int j = 1 ; j <= n ; j++){
				cin >> a[i][j];
				if(a[i][j] == 's') sx = i , sy = j;
				if(a[i][j] >= 'A' && a[i][j] <= 'Z') mark[i][j] = 1;
			}
		}	
		dfs(sx , sy);
		if(flag) cout << "YES\n";
		else cout << "NO\n";
	}
    return 0;
}
2023/7/31 15:04
加载中...