hdoj1242(bfs+priority_queue)
之前用dfs剪枝AC了,http://www.cnblogs.com/ediszhao/p/4741825.html,这次用bfs+priority_queue来尝试解题
题意:拯救行动,天使r有多个朋友a(friends,在这里被坑了几次,没看清题意),天使被关在牢房里,等着朋友来拯救,求拯救天使的最短距离。
以天使为起点进行bfs,找到的a就是最小拯救时间值。
#include <iostream>
#include <cstring>
#include <queue> using namespace std; struct node
{
int x,y,cnt;
friend bool operator < (node a,node b)
{
return a.cnt > b.cnt;
}
};
const int M = ;
char map[M][M];
int visited[M][M];
int n,m; int dire[][] = {{,},{,},{-,},{,-}};
priority_queue <struct node> q;
int bfs()
{
node now,next;
while (!q.empty())
{
now = q.top();
q.pop();
for (int i = ; i< ; i++)
{
int x = now.x+dire[i][];
int y = now.y+dire[i][];
if (x >= && x < n && y >= && y < m && map[x][y]!='#' && visited[x][y] == )
{
next.x = x;
next.y = y;
if (map[x][y] == 'a')
{
return (now.cnt+);
}
if (map[x][y] == 'x')
{
next.cnt = now.cnt+;
}
else next.cnt = now.cnt+;
visited[x][y] = ;
q.push(next);
}
}
}
return ;
}
int main()
{
while (cin >> n >> m)
{
node nn;
while (!q.empty()) //一定要清空之前的队列,在这里wrong了
q.pop();
for (int i =; i < n; i++)
{
for (int j = ; j < m; j++)
{
cin >> map[i][j];
visited[i][j] = ;
if (map[i][j] == 'r')
{
nn.x = i;
nn.y = j;
nn.cnt = ;
q.push(nn);
visited[i][j] = ;
}
}
}
int res = bfs();
if (!res)
cout << "Poor ANGEL has to stay in the prison all his life.\n";
else cout << res << endl;
}
return ;
} /*
7 8
#.#####.
#.a#..r.
#..#x...
..#..#.#
#...##..
.#......
........
2 8
a.#####r
#..xxaxx
*/
hdoj1242(bfs+priority_queue)的更多相关文章
- hdu 1175 bfs+priority_queue
连连看 如上图所示如果采用传统bfs的话,如果按照逆时针方向从(1,1)-->(3,4)搜索,会优先选择走拐四次弯的路径导致ans错误: Time Limit: 20000/10000 MS ( ...
- HDU 2822 (BFS+优先队列)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2822 题目大意:X消耗0,.消耗1, 求起点到终点最短消耗 解题思路: 每层BFS的结点,优先级不同 ...
- hdu1242 优先队列+bfs
Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- POJ2049Finding Nemo(bfs + 构图)
Finding Nemo Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 8456 Accepted: 1975 Desc ...
- HDU 2209 翻纸牌游戏 状态BFS
翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem De ...
- hdu 1548 A strange lift 宽搜bfs+优先队列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548 There is a strange lift.The lift can stop can at ...
- hdu - 1180 诡异的楼梯 (bfs+优先队列)
http://acm.hdu.edu.cn/showproblem.php?pid=1180 注意点就是楼梯是在harry移动完之后才会改变方向,那么只要统计到达这个点时间奇偶性,就可以知道当前楼梯是 ...
- hdu - 1242 Rescue && hdu - 2425 Hiking Trip (优先队列+bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1242 感觉题目没有表述清楚,angel的朋友应该不一定只有一个,那么正解就是a去搜索r,再用普通的bfs就能过了 ...
- POJ 1724 ROADS(BFS+优先队列)
题目链接 题意 : 求从1城市到n城市的最短路.但是每条路有两个属性,一个是路长,一个是花费.要求在花费为K内,找到最短路. 思路 :这个题好像有很多种做法,我用了BFS+优先队列.崔老师真是千年不变 ...
随机推荐
- CodeForces757A
A. Gotta Catch Em' All! time limit per test 1 second memory limit per test 256 megabytes input stand ...
- 【The Most Important】浅谈JSP表单Post方式中文乱码问题
首先祝大家鸡年吉祥!在这里我要说下这两天里这个问题困扰着我,大过年的心情都被烦扰的不好了,所以我带着兴奋的心情来赶快完成这篇博客,解决大家的问题.我的问题是post方式传递表单数据,Tomcat服务器 ...
- Swift资料大全
简单看了一下swift的语法,个人感觉相对于object-c很是简单明了.Swift的出现并不能说明iOS开发简单了很多,有可能会变得复杂,你需要学习两门编程语言,因为在程序员的世界里,务实并不是最重 ...
- 关于Task的一点思考和建议
前言 本打算继续写SQL Server系列,接下来应该是死锁了,但是在.NET Core项目中到处都是异步,最近在写一个爬虫用到异步,之前不是很频繁用到异步,当用到时就有点缩手缩尾,怕留下坑,还是小心 ...
- PHP变量处理之serialize
官方定义: string serialize ( mixed $value ) serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方.这有利于存储或传递 P ...
- 【4N魔方阵】
/* 4N魔方阵 */ #include<stdio.h> #include<stdlib.h> #define N 8 int main(void){ int i, j; ] ...
- apche基于域名,ip,端口的配置
基于域名的服务端: 13 iptables -F 14 setenforce 0 15 ifconfig eth0 172.18.43.146 16 yum -y install bind bind- ...
- 对象this的引用
this关键字的最大作用就是让类中一个方法,访问该类里的另一个方法或者实例变量. public class Dog {//定义一个方法 public void jump() { System.out. ...
- HTML学习三
今天主要学习的为JS和HTML标签的一起使用: 一.重定向: <html> <head> <title>JavaScript1</title> < ...
- 【2017年新篇章】 .NET 面试题汇总(一)
开篇 本次给大家介绍的是我收集以及自己个人保存一些.NET面试题 简介 此次包含的不止是.NET知识,也包含少许前端知识以及.net面试时所涉及的种种考点,希望能给找工作的同学们哪怕一点点帮助. 古人 ...