QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#442098 | #8742. 黑白 | union_of_britain# | AC ✓ | 58ms | 8576kb | C++14 | 945b | 2024-06-15 08:18:02 | 2024-06-15 08:18:02 |
Judging History
answer
#include<iostream>
using namespace std;
const int N=1e3+5;
char str[N][N];
int n,m,T,f[N*N];
inline int id(int a,int b){return (a-1)*m+b;}
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
inline int find(int x){return x==f[x]?x:f[x]=find(f[x]);}
inline void mer(int x,int y){f[find(x)]=find(y);}
inline void solve(){
cin>>n>>m;
for(int i=1;i<=n;++i) cin>>(str[i]+1);
int cnt=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
cnt+=(str[i][j]=='W'),f[id(i,j)]=id(i,j);
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
if(str[i][j]=='W')
for(int k=0;k<4;++k){
int x=dx[k]+i,y=dy[k]+j;
if(x<1||y<1||x>n||y>m||str[x][y]=='B') continue;
mer(id(x,y),id(i,j));
}
if(find(id(1,1))!=find(id(n,m))) return cout<<"J\n",void();
if((cnt-n-m+1)&1) return cout<<"I\n",void();
else cout<<"J\n",void();
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>T;
while(T--) solve();
}
详细
Test #1:
score: 100
Accepted
time: 58ms
memory: 8576kb
input:
100 2 6 WWBBWW WWWWWB 3 8 WWWBBBBB WWWBWWWB BBWWWBWW 5 2 WB BB BB BW BB 6 4 WWBW WBWB WWWW WWWB BBWW BWBW 2 3 WWW WBW 124 125 BWWWWWWWWWWWWWWWWWWWWWWWWWWBWWWWBWWWWWWWWBWWWWWWWWWWWBBBBWWWWWWWWWWWWWWWWWBWWWWWWWWWBWWWWWWWWWWBWWWWWWWWBBWWWWWWWWWWWWWWWWWWB WWWWWWWBWWBWWWWWWWWWWWBWWBWWBWWWWBWWWWWWWWWBWBWB...
output:
J J J I I J I I I J I J J J J J I I I I J J I I I J J I J J J J I J J J J J J I J J I I I J J I J J J I J I J J J J I I J J J I J J I J I I J J J I J I I J J I J J J J J I J J J I I J J I I J J J J I
result:
ok 100 lines