#include<bits/stdc++.h>
using namespace std;
char board[12][12];
int black_color[12][12];
int white_color[12][12];
int white_stone,black_stone;
void dfs(int i,int j)
{
if(i<0||j<0||i>=9||j>=9)
{
return;
}
if(board[i][j]=='O'||black_color[i][j]==1)
{
return;
}
if(board[i][j]=='X' && black_color[i][j]==0)
{
black_stone++;
black_color[i][j]=1;
}
else if(board[i][j]=='.')
{
black_color[i][j]=1;
}
black_color[i][j]=1;
dfs(i,j+1);
dfs(i,j-1);
dfs(i+1,j);
dfs(i-1,j);
}
void dfs1(int i,int j)
{
if(i<0||j<0||i>=9||j>=9)
{
return;
}
if(board[i][j]=='X' || white_color[i][j]==1)
{
return;
}
if(board[i][j]=='O' && white_color[i][j]==0)
{
white_stone++;
white_color[i][j]=1;
}
else if(board[i][j]=='.')
{
white_color[i][j]=1;
}
white_color[i][j]=1;
dfs1(i,j+1);
dfs1(i,j-1);
dfs1(i+1,j);
dfs1(i-1,j);
}
int main()
{
int number,i,j,white_territory,black_territory;
scanf("%d",&number);
getchar();
while(number--)
{
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
scanf("%c",&board[i][j]);
}
getchar();
}
white_territory=0;
black_territory=0;
black_stone=0;
white_stone=0;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(board[i][j]=='X' && black_color[i][j]==0)
{
dfs(i,j);
}
}
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(board[i][j]=='O' && white_color[i][j]==0)
{
dfs1(i,j);
}
}
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(board[i][j]=='.' && (black_color[i][j]==1 && white_color[i][j]==1))
{
continue;
}
if(board[i][j]=='.' && white_color[i][j]==1)
{
white_territory++;
}
else if(board[i][j]=='.' && black_color[i][j]==1)
{
black_territory++;
}
}
}
black_stone+=black_territory;
white_stone+=white_territory;
printf("Black %d White %d\n",black_stone,white_stone);
memset(black_color,0,sizeof(black_color));
memset(white_color,0,sizeof(white_color));
}
return 0;
}
using namespace std;
char board[12][12];
int black_color[12][12];
int white_color[12][12];
int white_stone,black_stone;
void dfs(int i,int j)
{
if(i<0||j<0||i>=9||j>=9)
{
return;
}
if(board[i][j]=='O'||black_color[i][j]==1)
{
return;
}
if(board[i][j]=='X' && black_color[i][j]==0)
{
black_stone++;
black_color[i][j]=1;
}
else if(board[i][j]=='.')
{
black_color[i][j]=1;
}
black_color[i][j]=1;
dfs(i,j+1);
dfs(i,j-1);
dfs(i+1,j);
dfs(i-1,j);
}
void dfs1(int i,int j)
{
if(i<0||j<0||i>=9||j>=9)
{
return;
}
if(board[i][j]=='X' || white_color[i][j]==1)
{
return;
}
if(board[i][j]=='O' && white_color[i][j]==0)
{
white_stone++;
white_color[i][j]=1;
}
else if(board[i][j]=='.')
{
white_color[i][j]=1;
}
white_color[i][j]=1;
dfs1(i,j+1);
dfs1(i,j-1);
dfs1(i+1,j);
dfs1(i-1,j);
}
int main()
{
int number,i,j,white_territory,black_territory;
scanf("%d",&number);
getchar();
while(number--)
{
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
scanf("%c",&board[i][j]);
}
getchar();
}
white_territory=0;
black_territory=0;
black_stone=0;
white_stone=0;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(board[i][j]=='X' && black_color[i][j]==0)
{
dfs(i,j);
}
}
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(board[i][j]=='O' && white_color[i][j]==0)
{
dfs1(i,j);
}
}
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(board[i][j]=='.' && (black_color[i][j]==1 && white_color[i][j]==1))
{
continue;
}
if(board[i][j]=='.' && white_color[i][j]==1)
{
white_territory++;
}
else if(board[i][j]=='.' && black_color[i][j]==1)
{
black_territory++;
}
}
}
black_stone+=black_territory;
white_stone+=white_territory;
printf("Black %d White %d\n",black_stone,white_stone);
memset(black_color,0,sizeof(black_color));
memset(white_color,0,sizeof(white_color));
}
return 0;
}
0 comments: (+add yours?)
Post a Comment