(hdu)5546 Ancient Go
Problem 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, T(≤T≤). T 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 x is the test case number (starting from ) and y 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 .......xo
.........
.........
..x......
.xox....x
.o.o...xo
..o......
.....xxxo
....xooo. ......ox.
.......o.
...o.....
..o.o....
...o.....
.........
.......o.
...x.....
........o Sample Output
Case #: Can kill in one move!!!
Case #: 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能包围白棋o,只能放一个黑棋
方法 搜索白棋四周有几个空白点如果小于等于1就可以
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>
using namespace std;
#define N 200
#define met(a,b) memset(a,b,sizeof(a));
vector<vector<int> >Q;
char str[N][N];
int dis[][]= {{,},{,},{-,},{,-}};
int vis[N][N];
int pan(int x,int y)
{
return (x>= && x< && y>= && y<);
}
int dfs(int x,int y)
{
vis[x][y]=;int f=;
for(int i=; i<; i++)
{
int xx = x+dis[i][];
int yy = y+dis[i][];
if(vis[xx][yy] || !pan(xx,yy))///搜过的和坐垫不符合的跳过
continue;
if(str[xx][yy]=='.')///有一个累加
{
f++;
vis[xx][yy]=;
}
if(str[xx][yy]=='o')///四周白棋的四周的空白点个数
f+=dfs(xx,yy);
}
return f;
}
int sove()
{
for(int i=; i<; i++)
{
for(int j=; j<; j++)
{
if(str[i][j]=='o') ///找到一个白棋搜索
{
met(vis,);
int ans=dfs(i,j);
if(ans<=)
return ;
}
}
}
return ;
}
int main()
{
int t,con=;
scanf("%d",&t);
while(t--)
{
for(int i=; i<; i++)
scanf("%s",str[i]); int ans=sove();
if(ans)
printf("Case #%d: Can kill in one move!!!\n",con++);
else
printf("Case #%d: Can not kill in one move!!!\n",con++);
}
return ;
}
(hdu)5546 Ancient Go的更多相关文章
- (hdu)5391 Zball in Tina Town
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5391 Problem Description Tina Town is a friendl ...
- (hdu)1285 确定比赛名次
Problem Description 有N个比赛队(<=N<=),编号依次为1,,,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接 ...
- (hdu)1042 N! 大数相乘
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1042 Problem Description Given an integer N( ≤ ...
- (hdu)5234 Happy birthday 二维dp+01背包
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5234 Problem Description Today is Gorwin’s birt ...
- (hdu)4858 项目管理 (vector)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4858 Problem Description 我们建造了一个大项目!这个项目有n个节点,用很多边连接起 ...
- 杭电(hdu)ACM 4548 美素数
美素数 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submis ...
- (hdu)1257 最少拦截系统
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1257 Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦 ...
- (hdu)5423 Rikka with Tree (dfs)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5423 Problem Description As we know, Rikka is p ...
- (hdu)2444 The Accomodation of Students 判断二分图+最大匹配数
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Problem Description There are a group of s ...
随机推荐
- uva_12535 - Probability Through Experiments
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- VPN两点注意事项
今天折腾了半天vpn,特记录以下两点注意事项: 1.客户端VPN连接,点右键属性=>网络选项卡=>双击Internet 协议版本 4 IPV4=>高级=>远程网络上使用默认网关 ...
- 如何让2个并列的div根据内容自动保持同等高度
最近在工作中碰到一个需求: 有左右2个并列的div,2个div都不能限定高度.左div为导航,右div为内容.如何能让左div块自动获得和右div块相等的高度? 同时,也有网友提问到"如果右 ...
- Redis集群战法整理
单机及集群搭建 http://www.codeceo.com/article/distributed-caching-redis-server.html 主从复制设置 Redis服务器复制(主—从配置 ...
- IOS程序内发短信 MFMessageComposeViewController
文章转载地址:http://www.headsky.org/?p=63 iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewCon ...
- POJ 2488-A Knight's Journey(DFS)
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 31702 Accepted: 10 ...
- Could not find class '****', referenced from method #####
找不到类,多半也是和第三方的jar包有关. 将找不到的类.在下图中的地方勾选出来.假设jar太多.有的类有冲突的话,须要明白其先后顺序. 请外一篇和第三方jar有关的异常的文章. Conversion ...
- 动作-CCActionInterval之CCGridAction家族
CCGrid3DAction // 作用:x轴3D反转特效 CCActionInterval *flipX3D= CCFlipX3D::create(4); // 作用:Y轴3D反转特效 CCA ...
- 【转】GitHub删除一个仓库——2013-08-27 21
http://xiacijian.blog.163.com/blog/static/849931902012111195041170/ 1.进入要删除的仓库 2.找到 导航栏 Code NetWor ...
- Linux新手入门:通过chmod改变文件权限--转
前面介绍过在Linux中如何查看文件的属性,在Linux文件权限详解中我们介绍了Linux文件的三种身份和四种权限,三种身份分别为: u:文件的拥有者 g:文件所属的群组 o:其他用户 对于每个身份, ...