Monday, 5 January 2015

UVA 852 - Deciding victory in Go(cpp file)

Problem Type : DFS



#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAX 10
using namespace std;
char mat[MAX][MAX];
int X[4]= {-1,0,0,1};
int Y[4]= {0,-1,1,0};
int color[MAX][MAX],cou1,cou2,color1[MAX][MAX];
void dfs(int i,int j)
{
  color[i][j]=1;
  cou1++;
  int k,vx,vy;
  for(k=0;k<4;k++)
  {
      vx=i+X[k];
      vy=j+Y[k];
    if(vx>=0 && vx<9 && vy>=0 && vy<9&&(mat[vx][vy]=='O'||mat[vx][vy]=='.'))
    {
        if(color[vx][vy]==0)
        {
            dfs(vx,vy);
        }
    }
  }
}
void dfs1(int i,int j)
{
  color1[i][j]=1;
  cou2++;
  int k,vx,vy;
  for(k=0;k<4;k++)
  {
      vx=i+X[k];
      vy=j+Y[k];
    if(vx>=0 && vx<9 && vy>=0 && vy<9&&((mat[vx][vy]=='.')||(mat[vx][vy]=='X')))
    {
        if(color1[vx][vy]==0)
        {
            dfs1(vx,vy);
        }
    }
  }
}
int main()
{
    int i,j,n,m,test;
    scanf("%d",&test);
    getchar();
    while(test--)
    {
        for(i=0; i<9; i++)
        {
            for(j=0;j<9;j++)
            {
                scanf(" %c",&mat[i][j]);
            }

        }

        memset(color,0,sizeof(color));
        cou1=0;
        cou2=0;
        for(i=0; i<9; i++)
        {
            for(j=0;j<9;j++)
            {
                if(mat[i][j]=='O' && color[i][j]==0)
                {
                    dfs(i,j);
                }
            }

        }
        memset(color1,0,sizeof(color1));
        memset(color,0,sizeof(color));
        cou2=0;
        for(i=0; i<9; i++)
        {
            for(j=0;j<9;j++)
            {
                if(mat[i][j]=='X' && color1[i][j]==0)
                {
                    dfs1(i,j);
                }
            }

        }
       int sum=cou1+cou2;
      int common = sum-81;
      int black = cou2-common;
      int white =cou1-common;
      printf("Black %d White %d\n",black,white);
      memset(mat,'\0',sizeof(mat));
    }
}

No comments:

Post a Comment

ট্রিগার এর মাধ্যমে ডাটা ইনসার্ট - insert data using Database Trigger (Mysql)

সর্বপ্রথম আমরা প্রবলেমটা বুঝিঃ আমি একটা টেবিলের একটা কলামের ভ্যালুর উপর ডিপেন্ড করে আরেকটা কলামে ডাটা insert করব । এই কাজটা ট্রি...