题目链接:hdu4198

题目大意:求起点S到出口的最短花费,其中#为障碍物,无法通过,‘.’的花费为1 ,@的花费为d+1。

需注意起点S可能就是出口,因为没考虑到这个,导致WA很多次.......

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<algorithm>
  4. #include<queue>
  5. using namespace std;
  6. char map[505][505];
  7. int d[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
  8. int n,m,t;
  9. int begin_x,begin_y,end_x,end_y;
  10. struct node
  11. {
  12. int x,y,time;
  13. friend bool operator < (node a,node b)
  14. {
  15. return a.time > b.time;
  16. }
  17. };
  18. void bfs()
  19. {
  20. priority_queue <node> q;
  21. node s,temp;
  22. s.x = begin_x;
  23. s.y = begin_y;
  24. s.time = 0;
  25. map[begin_x][begin_y] = '#';
  26. q.push(s);
  27. while(!q.empty())
  28. {
  29. temp = q.top();
  30. q.pop();
  31. if(temp.x == end_x && temp.y == end_y)
  32. {
  33. printf("%d\n",temp.time + 1);
  34. return;
  35. }
  36. for(int i = 0 ; i < 4 ; i ++)
  37. {
  38. s.x = temp.x + d[i][0];
  39. s.y = temp.y + d[i][1];
  40. if(s.x < 0 || s.x >= n || s.y < 0 || s.y >= m || map[s.x][s.y] == '#')
  41. continue;
  42. if(map[s.x][s.y] == '.') s.time = temp.time + 1;
  43. else s.time = temp.time + t + 1;
  44. map[s.x][s.y] = '#';
  45. q.push(s);
  46. }
  47. }
  48. }
  49. int main()
  50. {
  51. int T,i,j;
  52. scanf("%d",&T);
  53. while(T--)
  54. {
  55. scanf("%d%d%d",&n,&m,&t);
  56. for(i = 0 ; i < n ; i ++)
  57. {
  58. scanf("%s",map[i]);
  59. for(j = 0 ; j < m ; j ++)
  60. {
  61. if(map[i][j] == 'S')
  62. {
  63. begin_x = i;
  64. begin_y = j;
  65. }
  66. if( (i == 0 || i == n - 1 || j == 0 || j == m - 1) && map[i][j] != '#')//刚开始用的else if,没有考虑起点也是终点的情况,WA了很多次
  67. {
  68. end_x = i;
  69. end_y = j;
  70. }
  71. }
  72. }
  73. bfs();
  74. }
  75. return 0;
  76. }

hdu 4198 Quick out of the Harbour(BFS+优先队列)的更多相关文章

  1. 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 ...

  2. hdu 4198 Quick out of the Harbour

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4198 Quick out of the Harbour Description Captain Cle ...

  3. 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 ...

  4. hdu 2102 A计划 具体题解 (BFS+优先队列)

    题目链接:pid=2102">http://acm.hdu.edu.cn/showproblem.php?pid=2102 这道题属于BFS+优先队列 開始看到四分之中的一个的AC率感 ...

  5. hdu 1242 找到朋友最短的时间 (BFS+优先队列)

    找到朋友的最短时间 Sample Input7 8#.#####. //#不能走 a起点 x守卫 r朋友#.a#..r. //r可能不止一个#..#x.....#..#.##...##...#.... ...

  6. 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 ...

  7. 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 ...

  8. HDU 1312 Red and Black --- 入门搜索 BFS解法

    HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...

  9. hdu 3247 AC自动+状压dp+bfs处理

    Resource Archiver Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Ot ...

随机推荐

  1. (转)迎接 Entity Framework 7

    对实体框架的下一版本的开发正在顺利进行中.我在 2014 年度北美 TechEd 上第一次了解 EF 团队的工作内容,当时项目经理 Rowan Miller 讨论了 Entity Framework ...

  2. mysql分表分库

    单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数 ...

  3. CentOs Linux 常见命令

    整理一些常用的命令(持续更新): 查看端口是否开启: netstat -an | grep prot (查看是否打开23端口) |:通道的意思,grep是指查看当前字符所在的行 LINUX通过下面的命 ...

  4. FlexBuilder远程调试WEB应用

    Flex使用的开发工具FlexBuiler 3,web server使用apache. 1 第一次安装IE相应flashplayer的debug版本号,下载Flash player 11.8安装,下载 ...

  5. Appium基于安卓的各种FindElement的控件定位方法实践和建议

    AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用. 1. findElementByName 1.1 示例 el = driver.fin ...

  6. Android KitCat 4.4.2 ADB 官方所支持的所有Services格式翻译

    在之前的文章中有转帖网上同行制作的ADB协议表格<<adb概览及协议参考>>,但不够详尽,所以这里自己另外基于Android 4.4.2的技术文档重新做一次翻译. HOST S ...

  7. hdu oj1102 Constructing Roads(最小生成树)

    Constructing Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  8. 分布式消息系统kafka

    kafka:一个分布式消息系统 1.背景 最近因为工作需要,调研了追求高吞吐的轻量级消息系统Kafka,打算替换掉线上运行的ActiveMQ,主要是因为明年的预算日流量有十亿,而ActiveMQ的分布 ...

  9. 华硕K55DR体验 - 显卡就是坑

    朋友拿来电脑,本来他室友已经把他电脑重做完了,但还是卡,非要给我再搞一遍,难道?我就是传说中的大神?咳咳...YY一下,适可而止 华硕K55DR的配置来看,似乎应付CF没什么问题,可是,FPS各种不稳 ...

  10. Hbuilder常用快捷键功能.html

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...