HDU 2267 How Many People Can Survive(广搜,简单)
//一道简单的广搜水题
#include<queue>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
struct tt
{
int x,y;
};
char mp[][];
int vis[][]; //看了题解,发现只有4个方向,而不是8个方向。。。。题目貌似都没说清楚
//int xx[8]={0,0,1,1,1,-1,-1,-1};
//int yy[8]={1,-1,0,1,-1,0,1,-1};
int xx[]={,,,-};
int yy[]={,-,,};
int one,two;
int n,m;
void bfs(int x,int y)
{
one=,two=;
queue<tt>q;
tt front,next,tmp;
front.x=x,front.y=y;
while(!q.empty())
q.pop();
q.push(front);
vis[x][y]=;
if(mp[x][y]=='o'){one++;}
else if(mp[x][y]=='v'){two++;}
while(!q.empty())
{
tmp=q.front();
q.pop();
for(int i=;i<;i++)
{
next.x=tmp.x+xx[i];
next.y=tmp.y+yy[i];
if(next.x<||next.x>=n||next.y<||next.y>=m)
{
one=,two=;return;
}
else if(mp[next.x][next.y]!='#'&&vis[next.x][next.y]==)
{
vis[next.x][next.y]=;
if(mp[next.x][next.y]=='o'){one++;}
else if(mp[next.x][next.y]=='v'){two++;}
q.push(next);
}
}
}
} int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(vis,,sizeof(vis));
for(int i=;i<n;i++)
scanf("%s",mp[i]);
int ansone=,anstwo=;
for(int i=;i<n-;i++)
{
for(int j=;j<m-;j++)
{
if(vis[i][j]==&&mp[i][j]!='#')
{
bfs(i,j);
if(one==two)one=two=;
else if(one>two)two=;
else if(two>one)one=;
ansone+=one;
anstwo+=two;
}
}
}
printf("%d %d\n",ansone,anstwo);
}
return ;
}
HDU 2267 How Many People Can Survive(广搜,简单)的更多相关文章
- HDU 1010 Tempter of the Bone (广搜+减枝)
题目链接 Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. How ...
- hdu 1253:胜利大逃亡(基础广搜BFS)
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu 2717:Catch That Cow(bfs广搜,经典题,一维数组搜索)
Catch That Cow Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- hdu 1180:诡异的楼梯(BFS广搜)
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm ...
- HDU 3152 Obstacle Course(优先队列,广搜)
题目 用优先队列优化普通的广搜就可以过了. #include<stdio.h> #include<string.h> #include<algorithm> usi ...
- DFS-BFS(深搜广搜)原理及C++代码实现
深搜和广搜是图很多算法的基础,很多图的算法都是从这两个算法中启发而来. 深搜简单地说就是直接一搜到底,然后再回溯,再一搜到底,一直如此循环到没有新的结点. 广搜简单地说就是一层一层的搜,像水的波纹一样 ...
- hdu 5025 Saving Tang Monk 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092939.html 题目链接:hdu 5025 Saving Tang Monk 状态压缩 ...
- hdu 5094 Maze 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...
- Combine String HDU - 5707 dp or 广搜
Combine String HDU - 5707 题目大意:给你三个串a,b,c,问a和b是不是恰好能组成c,也就是a,b是不是c的两个互补的子序列. 根据题意就可以知道对于c的第一个就应该是a第一 ...
随机推荐
- array_change_key_case()
定义和用法 array_change_key_case() 函数将指定数组的所有的键进行大小写转换. 如果数组的键(索引)为数字则不发生变化.如果未提供第二个参数,则默认转换为小写. 语法 array ...
- swift2.0学习之拓展
拓展:和oc的拓展方法功能差点儿相同.就是给已经存在的类,结构体.枚举,协议类型添加新的方法 拓展语法: 用extensionkeyword声明: extension SomeType { // ne ...
- ExtJs4.1布局具体解释
Border布局: Ext.onReady(function(){ Ext.QuickTips.init(); Ext.create('Ext.container.Viewport', ...
- Cocos2d-X开发中国象棋《三》開始场景的实现
在前面两节(第一节.第二节)中介绍了中国象棋的功能和project文件.在这篇博客中将介绍中国象棋的開始场景的实现 在写代码前先理清一下实现開始场景的思路: 1.打开游戏后进入開始场景,场景上显示一个 ...
- Python3.4 远程操控电脑(开关机)
import poplib import sys import smtplib from email.mime.text import MIMEText import os from email.he ...
- 我在SharePoint行业的从业经历(二)
本文是我的SharePoint从业经历的第二篇,第一篇请參考 我在SharePoint行业的从业经历(一) 做完那个项目之后.对SharePoint 2003有了一些认识. 可是后来几年我就没在 ...
- SecureCRT——设置打印中文字符
1. 设置方法 使用SecureCRT打印由STM32发送的中文字符提示信息,显示乱码.在网上找了一些链接,再加上自己摸索,终于出了能够让SecureCRT打印中文的方法. 设置以下几个地方即可. 1 ...
- git 拉取和获取 pull 和 fetch 区别【转】
本文转载自:http://blog.csdn.net/u010094934/article/details/52775653 使用git 直接提交的话 直接 push 获取最新版本 有两种 ...
- Coursera Algorithms week2 栈和队列 练习测验: Stack with max
题目原文: Stack with max. Create a data structure that efficiently supports the stack operations (push a ...
- 【BZOJ4555】【TJOI2016】【HEOI2016】求和
题目 传送门 解法 我们可以用容斥来求第二类斯特林数 我们知道, 第二类斯特林数\(S(n, k)\)是\(n\)个元素放进\(k\)个无标号的盒子里, 不可以含有空的. 于是我们可以考虑可以含有空的 ...