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第一 ...
随机推荐
- iOS:解决pod的Insecure world writable dir问题
当我们运行pod setup的命令的时候,有时候会碰到这个警告: /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.33.1/lib/cocoapods/execut ...
- TCP学习(3)--TCP释放连接的过程(四次挥手)
一.TCP释放连接的过程(四次挥手) TCP释放连接的步骤例如以下图所看到的. 如今如果clientA和server端B都处于数据传送状态. TCP连接断开的过程例如以下: 1.clien ...
- LA 3695 部分枚举
运用部分枚举的思想,很明显完全枚举点的思想是不可能的.改为枚举上下边界,当确定右边界j后,对左边界i,可以有点数为on[j]+on[i]+(leftu[j]-leftu[i])+leftd[j]-le ...
- Codeforces Round #303 (Div. 2) E
五道水题,但要手快才好...我手慢了,E题目都没看完TAT.... 想了一发,很水,就是一遍Dijk即可,使用优先队列,同时记录由哪条边转移而来 #include <iostream> # ...
- [RxJS] AsyncSubject and ReplaySubject - Learn the Differences
We can use Subject as Observable and Observer: // Subject should be only used to emit value for priv ...
- jsp param动作标签
param 标签以"名字-值"对的形式为其它标签提供附加消息.这个标签与jsp:include.jsp:forward.jsp:plugin标签一起使用. param 动作标签 & ...
- Bitcask存储模型
----<大规模分布式存储系统:原理解析与架构实战>读书笔记 近期一直在分析OceanBase的源代码,恰巧碰到了OceanBase的核心开发人员的新作<大规模分布式存储系统:原理解 ...
- double型转换成string型
double型转换成string型 题目描写叙述: 如有一个函数.其可接受一个long double參数,并将參数转换为字符串.结果字符串应保留两位小数,比如,浮点值123.45678应该生成&quo ...
- pytest 失败用例重试
https://www.cnblogs.com/jinzhuduoduo/articles/7017405.html http://www.lxway.com/445949491.htm https: ...
- 创建虚拟机中的nova-scheduler 调度配置
一个Openstack 系统中通常包括多个计算节点 root@controller:/etc/nova# nova hypervisor-list +----+-------------------- ...