hdu4678Mine
http://acm.hdu.edu.cn/showproblem.php?pid=4678
之前写了一并差集找连通块 貌似不对 比赛时写的dfs爆栈了 只好用bfs了
单独数字块 为1
空白+数字块 数字数%2+1
异或
#include <iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
#include<queue>
using namespace std;
#define N 1010
int dis[][] = {,,-,,,,,-,,,,-,-,,-,-};
int n,m,k;
int vis[N][N],o[N][N],f[N][N];
struct node
{
int x,y;
};
int bfs(int x,int y)
{
queue<node>q;
struct node st,sd;
int num = ,i;
st.x = x;
st.y = y;
vis[x][y] = ;
q.push(st);
while(!q.empty())
{
sd = q.front();
int tx = sd.x;
int ty = sd.y;
q.pop();
for(i = ;i < ; i++)
{
int dx = tx+dis[i][];
int dy = ty+dis[i][];
if(dx>=&&dx<n&&dy>=&&dy<m&&!vis[dx][dy])
{
vis[dx][dy] = ;
if(!f[dx][dy]&&o[dx][dy])
num++;
st.x = dx;
st.y = dy;
if(!f[dx][dy]&&!o[dx][dy])
q.push(st);
}
}
}
if(num%==)
return ;
return ;
}
int main()
{
int i,j,t,kk=;
scanf("%d",&t);
while(t--)
{
kk++;
scanf("%d%d%d",&n,&m,&k);
for(i = ; i <= n ; i++)
for(j = ; j <= m ; j++)
{
f[i][j] = ;
o[i][j] = ;
vis[i][j] = ;
}
while(k--)
{
int x,y;
scanf("%d%d",&x,&y);
f[x][y] = ;
for(i = ; i < ; i++)
{
int tx = x+dis[i][];
int ty = y+dis[i][];
if(tx>=&&tx<n&&ty>=&&ty<m)
o[tx][ty] = ;
}
}
int ans=;
for(i = ; i < n ; i++)
for(j = ; j < m ; j++)
if(!f[i][j]&&!vis[i][j]&&o[i][j]==)
{
int w = bfs(i,j);
ans ^= w;
}
for(i = ; i < n ; i++)
for(j = ; j < m ; j++)
if(!f[i][j]&&!vis[i][j]&&o[i][j])
ans ^= ;
printf("Case #%d: ",kk);
if(ans==)
printf("Fanglaoshi\n");
else
printf("Xiemao\n");
}
return ;
}
hdu4678Mine的更多相关文章
随机推荐
- iOS推送通知流程
①注册推送通知使用方法:registerUserNotificationSettings, registerForRemoteNotifications ④APP发送deviceToken到第三方: ...
- StrHelper
public class StrHelper { private static string passWord; //加密字符串 /// <summary> /// 判断输入是否数字 // ...
- CKRule BRMS-决策表使用说明
决策表的编辑有2个步骤,即规则包编辑.规则数据设置和发布. 1. 规则包编辑 双击CKBoot.exe打开CKRule规则引擎编辑界面.点新建,在左侧的工程窗口中,就会出现一个新的规则包.点击根结 ...
- 计算 unique word numbers
计算不重复单词的个数 参考: 1.Unique words count
- OpenCV(3)-图像resize
在图像处理过程中,有时需要把图像调整到同样大小,便于处理,这时需要用到图像resize() 原函数 void resize(InputArray src, OutputArray dst, Size ...
- Yii 关于 find findAll 查找出制定的字段的方法
总所周知 modelName::model() -> find() //找出的是一个对象 modelName::model() -> findALL() //找出的是一个对象集合的数组 如 ...
- keepalived+haproxy-部署高可用负载均衡
环境: 准备两台机子,安装haproxy及keepalive都一样,只是配置不一样而已. 这里只说明一台机子上安装haproxy及keepalive. ======================== ...
- 《Nodejs开发加密货币》之二十七:开发通用的HTML组件
人的懒惰常常是麻烦的开始.多数程序员都希望自己的工作一劳永逸,一次开发,到处使用,成了人人追逐的目标,我也不例外.最初写<Nodejs开发加密货币>系列文章,因为不喜欢设定好了去写,所以目 ...
- Unity3D--学习太空射击游戏制作(二)
步骤三:创建主角 游戏的主角是一艘太空飞船,我们将使用一个飞船模型作为游戏的主角,并赋予他一个脚本,控制他的运动,游戏体的组件必须依赖于脚本才能运行. 01:在Project窗口找到Player.fb ...
- Chrome 浏览器各版本下载大全
随着最近64位版本的 Chrome 浏览器正式版的推出,Chrome 浏览器再次受到广大浏览迷的重点关注,今天我们就整理一下各版本的 Chrome 浏览器 32位及64位的下载地址,方便各位浏览迷选择 ...