QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#442098#8742. 黑白union_of_britain#AC ✓58ms8576kbC++14945b2024-06-15 08:18:022024-06-15 08:18:02

Judging History

你现在查看的是最新测评结果

  • [2024-06-15 08:18:02]
  • 评测
  • 测评结果:AC
  • 用时:58ms
  • 内存:8576kb
  • [2024-06-15 08:18:02]
  • 提交

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