2015 南阳 CCPC G.Ancient Go

题目链接: Cilck here~~

                                                                                   G -
Ancient Go

Description

Yu Zhou likes to play Go with Su Lu. From the historical research, we found that there are much difference on the rules between ancient go and modern go.

Here is the rules for ancient go they were playing:

  • The game is played on a

    cell board, the chess can be put on the intersection of the board lines, so there are

    different positions to put the chess.
  • Yu Zhou always takes the black and Su Lu the white. They put the chess onto the game board alternately.
  • The chess of the same color makes connected components(connected by the board lines), for each of the components, if it's not connected with any of the empty cells,

    this component dies and will be removed from the game board.
  • When one of the player makes his move, check the opponent's components first. After removing the dead opponent's components, check with the player's components and remove

    the dead components.

One day, Yu Zhou was playing ancient go with Su Lu at home. It's Yu Zhou's move now. But they had to go for an emergency military action. Little Qiao looked at the game board and

would like to know whether Yu Zhou has a move to kill at least one of Su Lu's chess.

Input

The first line of the input gives the number of test cases,
().

test cases follow. Test cases are separated by an empty line. Each test case consist of


lines represent the game board. Each line consists of

characters. Each character represents a cell on the game board. . represents an empty cell.
x represents a
cell with black chess which owned by Yu Zhou. o represents a cell with white chess which owned by Su Lu.

Output

For each test case, output one line containing
Case #x: y
, where
is the test case number (starting from )
and
is Can kill in one move!!! if Yu Zhou
has a move to kill at least one of Su Lu's components. Can not kill in one move!!! otherwise.

Sample Input

2

…….xo
………
………
..x……
.xox….x
.o.o…xo
..o……
…..xxxo
….xooo.

……ox.
…….o.
…o…..
..o.o….
…o…..
………
…….o.
…x…..
……..o

Sample Output

Case #1: Can kill in one move!!!
Case #2: Can not kill in one move!!!

Hint

In the first test case, Yu Zhou has

different ways to kill Su Lu's component.

In the second test case, there is no way to kill Su Lu's component.

题目大意:

有两个人在下围棋,然后给定一个棋局,让你判断X是否能赢。。。

解题思路;

很明显这是一个DFS搜索,但是需要用两次。又因为棋盘式9*9的

所以暴力做就可以,但是怎么暴力呢。首先一个搜索dfs1判断是不是有'.'

然后是另一个dfs,判断是不是能够赢。。

直接上代码:

<span style="font-size:14px;">#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
using namespace std;

#define MM(a) memset(a,0,sizeof(a))

typedef long long LL;
typedef unsigned long long ULL;
const int maxn = 15;
const int mod = 1000000007;
const double eps = 1e0-7;
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, 1, -1};
bool vis[maxn][maxn];
char str[maxn][maxn];
bool dfs1(int x, int y)
{
    vis[x][y] = 1;
    if(x<0 || y<0 || x>=9 || y>=9)
        return 0;
    for(int i=0; i<4; i++)
    {
        int xx = dx[i] + x;
        int yy = dy[i] + y;
        if(xx<0 || yy<0 || xx>=9 || yy>=9 || vis[xx][yy])
            continue;
        if(str[xx][yy] == '.')
            return 1;
        if(str[xx][yy] == 'o')
            if(dfs1(xx, yy))
                return 1;
    }
    return 0;
}

bool dfs(int x, int y)
{
    if(str[x][y] != '.')
        return 0;
    str[x][y] = 'x';
    for(int i=0; i<4; i++)
    {
        int xx = dx[i] + x;
        int yy = dy[i] + y;
        if(xx<0 || yy<0 || xx>=9 || yy>=9)
            continue;
        if(str[xx][yy] == 'o')
        {
            MM(vis);
            if(!dfs1(xx, yy))
                return 1;
        }
    }
    str[x][y] = '.';
    return 0;
}
int main()
{
    int T;
    scanf("%d",&T);
    for(int cas=1; cas<=T; cas++)
    {
        for(int i=0; i<9; i++)
            cin>>str[i];
        bool ok = false;
        for(int i=0; i<9; i++)
        {
            for(int j=0; j<9; j++)
            {
                if(str[i][j]=='o' || str[i][j]=='x')
                    continue;
                if(dfs(i, j))
                {
                    ok = true;
                    break;
                }
            }
            if(ok)
                break;
        }
        if(ok)
            printf("Case #%d: Can kill in one move!!!\n",cas);
        else
            printf("Case #%d: Can not kill in one move!!!\n",cas);
    }
    return 0;
}

</span>
时间: 2024-10-21 11:43:08

2015 南阳 CCPC G.Ancient Go的相关文章

2015上半年 DDoS 威胁报告:过百G流量攻击多!

雷锋网8月20日消息,绿盟科技今日发布了<2015年上半年DDoS威胁报告>.报告显示,2015 年上半年DDoS攻击存在两极分化的态势,大流量攻击不断增长(>100G的攻击有33起)并开始走向云端,小流量攻击(1分钟以下42.74%) 变身脉冲及慢速攻击,主要针对行业业务特性.在此背景下,攻击流量呈现混合化,并以UDP混合流量为主(72%). 具体来说,大流量攻击呈现增长的趋势之下,过百G的攻击越来越多:此外大流量攻击在游戏行业中加剧,尤以UDP攻击常见.小流量方面,小流量快攻击变身脉

【CES 2015】LG发曲面屏手机G Flex2:首款八核骁龙

摘要: 北京时间今天早晨0点30分,LG于拉斯维加斯的CES消费者电子展中正式发布了它们的第二代曲面屏产品LG G Flex 2. LG G Flex 2采用了新一代5.5英寸Full-HD(1080P)的P-OLED曲面显示屏,从侧面观察 北京时间今天早晨0点30分,LG于拉斯维加斯的CES消费者电子展中正式发布了它们的第二代曲面屏产品--LG G Flex 2. LG G Flex 2采用了新一代5.5英寸Full-HD(1080P)的P-OLED曲面显示屏,从侧面观察,机身曲度达到了700

Photoshop合成2015朦胧城市海报场景

  Photoshop合成2015朦胧城市海报场景          效果图: 素材: 首先打开主体的素材,右侧能看到有一些奇怪的外文,先把它搞掉. 先把背景复制一层,是个不错的习惯.用污点修复工具在文字上刷两下去掉主体. 一些瑕疵再用工具修复下. 不满意的地方可以用仿制图章修复,看一下圈住的地方,有些偏暗,我们要调整一下. 新建一个曲线调整层,略向上拉一下,然后将蒙版都填充黑,用柔角的白色画笔擦出需要调亮的区域. 现在来看一下,亮度虽然上去了,但是颜色却变淡了,我们再用饱和度追加回来-- 同样

2015年春运火车票抢票攻略

  2015年春运时间:2015年春节是从2月19日,所以,2014年春运时间从2月4日开始,至3月15日结束,共计40天.今年春运农历时间是是2014年腊月十六到2015年正月二十五.自2014年11月28日起,铁路部门将对互联网.电话订票的起售时间进行调整.放票时间点从16个调整为21个,即8:00至18:00期间,每个整点和半点均有新票起售,同时C.D.G字头列车不再单独起售,起售时间与车站保持一致. 各地区起售的具体时间:预售时间表 -自2014年12月1日起,铁路互联网售票.电话订票的

2015年信息通信网络技术展望

通信产业正进入一个新的变革和高速发展期,互联网和通信网络的深入融合成为信息通信网络发展的重要特征,行业颠覆与重构正在出现.一方面,互联网业务的蓬勃发展和各种颠覆性新技术的不断涌现,对通信网络提出了更高的要求;另一方面,IT技术进步,尤其是新型数据中心和云计算技术的成熟和广泛应用,推动通信网络向超宽带"云"网络发展.最高的网络性能.最低的每比特传送成本和最个性化的网络是未来网络将要重点面对的三大需求.All IP.SDN/NFV和云将是未来网络的三大使能技术,宽带化.移动化.泛在化和融合

[笔试题目] 美团2015年9月后端开发工程师笔试题

由于题目是我通过草稿回顾,可能表述不清,但是内容大致一样.希望该博客内容对你有所帮助,题目所有权归美团公司所有,我只是想分享给大家学习,还望贵公司海涵~ 面试职位 应聘职位:后端开发工程师 岗位描述: 岗位要求: 面试时间:2015年9月19日 面试题型:90分钟 16单选+4多选+2编程 单选题 第1题 从A->B路程中有段扶梯,某人途中需要绑鞋带,问那种情况更快? A.路上绑鞋带时间快 B.扶梯上绑鞋带时间快 C.时间一样 D.扶梯路程和绑鞋带时间左右 第2题 X86平台上,int型变量内存

2015年之后显示技术领域的五大技术发展趋势

现在智能手机和平板电脑的硬件配置已经到了一个平稳期,但是关于显示屏却一直在以各种形式不断进步,包括更高的屏幕分辨率.更好的颜色显示等等,并且还有更多值得我们期待的新技术.现在国外科技网站androidauthority就为我们总结了在移动显示市场非常值得期待的五种新技术和预言,并且可能会在未来一年左右的时间里进入普通的消费级市场.1.无处不在的显示屏首先,显示市场目前正在蓬勃发展,并且不断出现新的产品组合以及消费者对各种产品的需求也在持续提升.在过去的几年内,大部分消费者可以在自己的家中已经积累

2015火车票抢票,放票时间,几点放票

原文地址:http://www.12306.cn/mormhweb/zxdt/201305/t20130516_600.html 关于调整互联网.电话订票起售时间的公告 [2014-01-07] 自2014年11月28日起,铁路部门将对互联网.电话订票的起售时间进行调整.放票时间点从16个调整为21个,即8:00至18:00期间,每个整点和半点均有新票起售,同时C.D.G字头列车不再单独起售,起售时间与车站保持一致,具体方案如下:    8:00 起售车站 北京西. 8:30 起售车站 白城.成

编译最新版webrtc源码和编译好的整个项目10多个G【分享】

编译最新版webrtc源码和编译好的整个项目10多个G[分享]   参考https://webrtc.org/native-code/development/编译最新版webrtc源码: Git clone https://chromium.googlesource.com/external/webrtc gclient config https://chromium.googlesource.com/external/webrtc --name=src set DEPOT_TOOLS_WIN_