Tuesday 21 April 2020

UVA 260 - Il Gioco dell'X Solution

#include<bits/stdc++.h>
using namespace std;
#define MAX 1111
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(cin>>n)
    {
        if(n==0)
        break;
        cas++;
        getchar();
        for(i=0; i<n; i++)
        {
            cin>>mat[i];
        }

        for(i=0; i<n; i++)
        {
            if(mat[i][0] == 'w' && color[i][0]==0)
            {
                bfs(i,0);
            }

        }
        int cou =0;
        for(i=0; i<n; i++)
        {
            if(color[i][n-1]==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));
    }
    return 0;

}

No comments:

Post a Comment