题目描述:
输入描述:
输出描述:
样例:
说明:
题意:一个n*m的网格,w是白色,b是黑色,如果这行有黑色的,可以把这整行染成黑的,这列也一样 ,问几步可以给r,c这个点变成黑色
思路:如果图上没有黑点就是-1,如果r,c刚好为黑就是0, 如果r行或者l列有黑就是1,否则就睡2
#include<bits/stdc++.h>
using namespace std;
char ch[55][55];
int arr[55][55];
int main(){
ios::sync_with_stdio(false);
int t;
cin >> t;
int n, m, r, c;
while(t--){
cin >> n >> m >> r >> c;
r--;
c--;
bool f = 0;
for(int i = 0; i < n; i++){
for(int l = 0; l < m; l++){
cin >> ch[i][l];
if(ch[i][l] == 'W'){
arr[i][l] = 0;
}else{
arr[i][l] = 1;
}
if(arr[i][l] == 1){
f = 1;
}
}
}
if(f == 0){
cout << -1 << endl;
continue;
}
if(arr[r][c] == 1){
cout << 0 << endl;
continue;
}
f = 0;
for(int i = 0; i < m; i++){
if(arr[r][i] == 1){
f = 1;
}
}
for(int l = 0; l < n; l++){
if(arr[l][c] == 1){
f = 1;
}
}
if(f){
cout << 1 << endl;
}else{
cout << 2 << endl;
}
}
return 0;
}