2个注意,
一个是优先级重写。利用,里面没有引用,然后是左大于右就排在后面。
bool operator<(mynode ne1, mynode ne2)
{
return ne1.cost > ne2.cost;
}
二是容器的元素每次都应该清除。

#include <iostream>
#include <cmath>
#include<set>
#include<string.h>
#include <queue>
#include <tuple>
#define scanf scanf_s
#define inf 0x3f3f3f3f
#define LL long long
#define mod 100000007
using namespace std;struct mynode {int cost, x, y;
};
bool operator<(mynode ne1, mynode ne2)//参数也可以为引用,值传递
{return ne1.cost > ne2.cost;
}
int main() {int m, n, T, cost, x, y;int vis[104][104];int way[][2] = { { 0,  1 },{ 1,  0 },{ -1, 0 },{ 0,  -1 } };mynode zhu;char c;char A[105][105];scanf("%d", &T);while (T--) {priority_queue<mynode> q;memset(vis, 0, sizeof(vis));int flag = 0;scanf("%d%d", &n, &m);for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cin >> A[i][j];if (A[i][j] == '@') {zhu = mynode{ 0, i, j };vis[i][j] = 1;}}}for (q.push(zhu); !q.empty();q.pop()) {mynode now = q.top();cost = now.cost;if (now.x <= 0 || n - 1 <= now.x || now.y <= 0 || m - 1 <= now.y) {flag = 1;cout << cost << endl;break;}                  for (int i = 0; i < 4; i++) {x = now.x; y = now.y;x += way[i][0];y += way[i][1];if (!vis[x][y] && A[x][y] != '#') {if (A[x][y] == '*') {mynode a2 = mynode{ cost + 1,x,y };vis[x][y] = 1;q.push(a2);}else if(A[x][y]=='.'){mynode a2 = mynode{ cost ,x,y };vis[x][y] = 1;q.push(a2);}}}}if (!flag)puts("-1");}
}

你经历过绝望吗?两次!相关推荐

  1. CSU 1726:你经历过绝望吗?两次! (BFS+优先队列)

    你经历过绝望吗?两次! Time limit:1000 ms Memory limit:131072 kB OS:Windows Problem Description 4月16日,日本熊本地区强震后 ...

  2. CSU 1726-你经历过绝望吗?两次!(BFS+剪枝)

    F - 你经历过绝望吗?两次! Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu Subm ...

  3. CSUOJ 1726 你经历过绝望吗?两次!(BFS + 优先队列)

    1726: 你经历过绝望吗?两次! Description 4月16日,日本熊本地区强震后,受灾严重的阿苏市一养猪场倒塌,幸运的是,猪圈里很多头猪依然坚强存活.当地15名消防员耗时一天解救围困的&qu ...

  4. csu1726 你经历过绝望吗?两次!

    4月16日,日本熊本地区强震后,受灾严重的阿苏市一养猪场倒塌,幸运的是,猪圈里很多头猪依然坚强存活.当地15名消防员耗时一天解救围困的"猪坚强".不过与在废墟中靠吃木炭饮雨水存活3 ...

  5. CSU 1726: 你经历过绝望吗?两次!

    题目传送门 平常不是很喜欢用 cin 和 cout 的,但是不知道为什么 scanf 就W了,cin 就 A了 ,应该是数据格式问题吧 代码: #include<cstdio> #incl ...

  6. 编译Spring5.0.x源码之一路坎坷,你经历过绝望吗?

    本文来说说在编译spring-springframework-5.0.x的路上,小编我到底经历了什么? 如果正在看文章你,恰好也想要研究spring源码,那么请先做好准备再动手,不然迎来的问题如滔滔江 ...

  7. java新人面试经历_分享近两周以来的真实面试经历

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 过一天,第二家,其实算是第一家真正的面试.北大方正集团,职位就是java后端开发实习生. 到了之后首先笔试,自我感觉做得不太好,后来直接HR过来面试,和我 ...

  8. 程序员面试快手后感慨:你们经历过绝望吗?三个面试官都是清华的

    一名程序员在面试完快手后如此感叹:快手的要求确实高,比阿里难进100倍,三个面试官都是清华的,全是问的acm和算法题. 所谓同行相轻,马上又网友评论:题刷得好不代表解决问题能力强,面试一般考一两个考察 ...

  9. 饿了么四年、阿里两年:研发路上的一些总结与思考

    作者 | 石佳宁 "最重要的是选择,最困难的是坚持." 我是在 2014 年入职饿了么,从前端和 PHP 一直做到后端架构和团队,从 2014 年到 2017 年陆续负责过公司客服 ...

最新文章

  1. express中放置静态文件
  2. 「吃鸡」之父自立门户!研发新沙盒游戏连接元宇宙
  3. [转]opensuse 更新源
  4. python之torchlight使用_为什么Python被誉为全世界最高效的编程语言?
  5. Employee Assign Organization unit
  6. 第19次csp认证 202006-2 稀疏向量(C++)
  7. python中if有几种使用方式_python 中if-else的多种简洁的写法
  8. margin为负值的几种情况
  9. java 中文域名转码_转换java方法
  10. Linux minilogd占用内存过高及开机启动项修改
  11. List vs IEnumerable vs IQueryable vs ICollection vs IDictionary
  12. Django视图系统
  13. C语言怎么用char输出多个字母,c语言中char类型如何存放多个字符
  14. MATLAB中help的使用
  15. kali无线破解实战
  16. 论文笔记7 --(ReID)Video-based Person Re-identification via Self Paced Weighting
  17. PMP项目管理是什么意思?
  18. Uniapp返回上一页触发页面更新
  19. 数字信号处理实验二:DFT的共轭对称性及应用
  20. unix_timestamp()和 from_unixtime()的用法

热门文章

  1. python实现语音通话_python 实现语音聊天机器人的示例代码
  2. 无需设置权限您照样可以访问OBS桶中的数据?
  3. Android集成微信支付
  4. 中国幼儿教育市场运营模式与未来发展方向分析报告2022版
  5. 填坑之一 从零开始的神棍之路
  6. 一场奶香味的定增:让资本助力“奶生态”
  7. Java是什么?我们为什么要学习Java?
  8. 咖说 | ​数字基建狂潮中:区块链处于什么位置?
  9. mysql 错误码 1267_mysql错误1267的解决方法
  10. 开始连载长篇小说《星辰傀儡线》