(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 ... 
随机推荐
- zoj Simple Equation 数论
			题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5176 AX+BY = XY => (X-B)*(Y-A)= ... 
- Redis在PHP中的基本使用案例
			下载http://www.oschina.net/p/redis 解压后里面有:lib 源文件 .examples 例子.test测试 将lib目录拷贝到你的项目中,就可以开始你的predis操作了. ... 
- 问题-[致命错误] Project1.dpr(1): Unit not found: 'System.pas' or binary equivalents (DCU,DPU)
			问题现象:[致命错误] Project1.dpr(1): Unit not found: 'System.pas' or binary equivalents (DCU,DPU) 问题原因:由于删除D ... 
- java_method_获取数据库中列表的第一行第一列的int值
			List<String[]> counts=DataBaseManage.getInstance().executeQuery(sql, 1, list); int count=0; if ... 
- 用document.title=“xxx”动态修改title,在ios的微信下面不生效
			单页应用里整个页面只会在第一次完全刷新,后面只会局部刷新(一般不包括head及里面的title),所以无法在服务器端控制title,只能在页面刷新的时候通过js修改title.常规做法如下,可惜在iO ... 
- Delphi- 数据加密和解密
			Delphi进行数据加密,在数据库方面经常要使用到.从网上转载过来的,以后会经常会用到. 一.MD5加密算法 在C#/.Net里提供了MD5加密的类库.在Delphi中没有.只能自己建一个新的单位,将 ... 
- 用NGUI做一个计时条!
			1.建立两个UISprite. 2.建立脚本CountingTime 3.编写脚本 public class CountTime : MonoBehaviour { //时间计时器 public fl ... 
- 解决linux redhat6下安装git的问题
			今天用到linux上的git安装过程比较曲折,记录一下: 首先会报需要perl rpm -ivh git-1.7.1-14.2.x86_64.rpm warning: git-1.7.1-14.2.x ... 
- 【C#】Entity Framework 增删改查和事务操作
			1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ... 
- 有关UIImageView+AFNetworking 下载图片的线程问题
			今天写了一个demo,从服务器获取图片,然后显示在cell上,大家都知道cell的重用机制,当往下拉的时候,上面的cell遮住了,下面的cell就会重用被遮住的cell, 贴代码: NSString ... 
