hdu 4198 Quick out of the Harbour(BFS+优先队列)
题目链接:hdu4198
题目大意:求起点S到出口的最短花费,其中#为障碍物,无法通过,‘.’的花费为1 ,@的花费为d+1。
需注意起点S可能就是出口,因为没考虑到这个,导致WA很多次.......
- #include<stdio.h>
- #include<string.h>
- #include<algorithm>
- #include<queue>
- using namespace std;
- char map[505][505];
- int d[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
- int n,m,t;
- int begin_x,begin_y,end_x,end_y;
- struct node
- {
- int x,y,time;
- friend bool operator < (node a,node b)
- {
- return a.time > b.time;
- }
- };
- void bfs()
- {
- priority_queue <node> q;
- node s,temp;
- s.x = begin_x;
- s.y = begin_y;
- s.time = 0;
- map[begin_x][begin_y] = '#';
- q.push(s);
- while(!q.empty())
- {
- temp = q.top();
- q.pop();
- if(temp.x == end_x && temp.y == end_y)
- {
- printf("%d\n",temp.time + 1);
- return;
- }
- for(int i = 0 ; i < 4 ; i ++)
- {
- s.x = temp.x + d[i][0];
- s.y = temp.y + d[i][1];
- if(s.x < 0 || s.x >= n || s.y < 0 || s.y >= m || map[s.x][s.y] == '#')
- continue;
- if(map[s.x][s.y] == '.') s.time = temp.time + 1;
- else s.time = temp.time + t + 1;
- map[s.x][s.y] = '#';
- q.push(s);
- }
- }
- }
- int main()
- {
- int T,i,j;
- scanf("%d",&T);
- while(T--)
- {
- scanf("%d%d%d",&n,&m,&t);
- for(i = 0 ; i < n ; i ++)
- {
- scanf("%s",map[i]);
- for(j = 0 ; j < m ; j ++)
- {
- if(map[i][j] == 'S')
- {
- begin_x = i;
- begin_y = j;
- }
- if( (i == 0 || i == n - 1 || j == 0 || j == m - 1) && map[i][j] != '#')//刚开始用的else if,没有考虑起点也是终点的情况,WA了很多次
- {
- end_x = i;
- end_y = j;
- }
- }
- }
- bfs();
- }
- return 0;
- }
hdu 4198 Quick out of the Harbour(BFS+优先队列)的更多相关文章
- HDU - 4198 Quick out of the Harbour (BFS+优先队列)
Description Captain Clearbeard decided to go to the harbour for a few days so his crew could inspect ...
- hdu 4198 Quick out of the Harbour
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4198 Quick out of the Harbour Description Captain Cle ...
- hdu 4198:Quick out of the Harbour解题报告
Quick out of the Harbour Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- hdu 2102 A计划 具体题解 (BFS+优先队列)
题目链接:pid=2102">http://acm.hdu.edu.cn/showproblem.php?pid=2102 这道题属于BFS+优先队列 開始看到四分之中的一个的AC率感 ...
- hdu 1242 找到朋友最短的时间 (BFS+优先队列)
找到朋友的最短时间 Sample Input7 8#.#####. //#不能走 a起点 x守卫 r朋友#.a#..r. //r可能不止一个#..#x.....#..#.##...##...#.... ...
- 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 1026 Ignatius and the Princess I(BFS+优先队列)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1026 Ignatius and the Princess I Time Limit: 2000/100 ...
- HDU 1312 Red and Black --- 入门搜索 BFS解法
HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...
- hdu 3247 AC自动+状压dp+bfs处理
Resource Archiver Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Ot ...
随机推荐
- (转)迎接 Entity Framework 7
对实体框架的下一版本的开发正在顺利进行中.我在 2014 年度北美 TechEd 上第一次了解 EF 团队的工作内容,当时项目经理 Rowan Miller 讨论了 Entity Framework ...
- mysql分表分库
单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数 ...
- CentOs Linux 常见命令
整理一些常用的命令(持续更新): 查看端口是否开启: netstat -an | grep prot (查看是否打开23端口) |:通道的意思,grep是指查看当前字符所在的行 LINUX通过下面的命 ...
- FlexBuilder远程调试WEB应用
Flex使用的开发工具FlexBuiler 3,web server使用apache. 1 第一次安装IE相应flashplayer的debug版本号,下载Flash player 11.8安装,下载 ...
- Appium基于安卓的各种FindElement的控件定位方法实践和建议
AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用. 1. findElementByName 1.1 示例 el = driver.fin ...
- Android KitCat 4.4.2 ADB 官方所支持的所有Services格式翻译
在之前的文章中有转帖网上同行制作的ADB协议表格<<adb概览及协议参考>>,但不够详尽,所以这里自己另外基于Android 4.4.2的技术文档重新做一次翻译. HOST S ...
- hdu oj1102 Constructing Roads(最小生成树)
Constructing Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 分布式消息系统kafka
kafka:一个分布式消息系统 1.背景 最近因为工作需要,调研了追求高吞吐的轻量级消息系统Kafka,打算替换掉线上运行的ActiveMQ,主要是因为明年的预算日流量有十亿,而ActiveMQ的分布 ...
- 华硕K55DR体验 - 显卡就是坑
朋友拿来电脑,本来他室友已经把他电脑重做完了,但还是卡,非要给我再搞一遍,难道?我就是传说中的大神?咳咳...YY一下,适可而止 华硕K55DR的配置来看,似乎应付CF没什么问题,可是,FPS各种不稳 ...
- Hbuilder常用快捷键功能.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...