Problem Type : GRAPH(BFS)
#include<stdio.h>
#include<string.h>
#include<queue>
#define MAX 1111
using namespace std;
int color[MAX][MAX],n;
char mat[MAX][MAX];
int X[6]= {-1,-1,0,0,1,1};
int Y[6]= {-1,0,-1,1,0,1};
void bfs(int i,int j)
{
int vx,ux,vy,uy,k;
queue<int>Q;
Q.push(i);
Q.push(j);
color[i][j]=1;
while(!Q.empty())
{
ux=Q.front();
Q.pop();
uy = Q.front();
Q.pop();
for(k=0; k<6; k++)
{
vx = ux+X[k];
vy = uy+Y[k];
if((vx>=1&&vx<=n) && (vy>=1&&vy<=n) && mat[vx][vy]=='w')
{
if(!color[vx][vy])
{
color[vx][vy]=1 ;
Q.push(vx);
Q.push(vy);
}
}
}
}
}
int main()
{
int i ,j,l,cas=0;
while(scanf("%d",&n)&&n)
{
cas++;
getchar();
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf(" %c",&mat[i][j]);
}
}
for(i=1; i<=n; i++)
{
if(mat[i][1] == 'w' && color[i][1]==0)
{
bfs(i,1);
}
}
int cou =0;
for(i=1; i<=n; i++)
{
if(color[i][n]==1)
{
cou=1;
break;
}
}
if(cou==1)
printf("%d W\n",cas);
else if(cou ==0)
{
printf("%d B\n",cas);
}
memset(color,0,sizeof(color));
memset(mat,'\0',sizeof(mat));
}
}
#include<stdio.h>
#include<string.h>
#include<queue>
#define MAX 1111
using namespace std;
int color[MAX][MAX],n;
char mat[MAX][MAX];
int X[6]= {-1,-1,0,0,1,1};
int Y[6]= {-1,0,-1,1,0,1};
void bfs(int i,int j)
{
int vx,ux,vy,uy,k;
queue<int>Q;
Q.push(i);
Q.push(j);
color[i][j]=1;
while(!Q.empty())
{
ux=Q.front();
Q.pop();
uy = Q.front();
Q.pop();
for(k=0; k<6; k++)
{
vx = ux+X[k];
vy = uy+Y[k];
if((vx>=1&&vx<=n) && (vy>=1&&vy<=n) && mat[vx][vy]=='w')
{
if(!color[vx][vy])
{
color[vx][vy]=1 ;
Q.push(vx);
Q.push(vy);
}
}
}
}
}
int main()
{
int i ,j,l,cas=0;
while(scanf("%d",&n)&&n)
{
cas++;
getchar();
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf(" %c",&mat[i][j]);
}
}
for(i=1; i<=n; i++)
{
if(mat[i][1] == 'w' && color[i][1]==0)
{
bfs(i,1);
}
}
int cou =0;
for(i=1; i<=n; i++)
{
if(color[i][n]==1)
{
cou=1;
break;
}
}
if(cou==1)
printf("%d W\n",cas);
else if(cou ==0)
{
printf("%d B\n",cas);
}
memset(color,0,sizeof(color));
memset(mat,'\0',sizeof(mat));
}
}
No comments:
Post a Comment