博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu12429(BFS+优先队列)
阅读量:7078 次
发布时间:2019-06-28

本文共 1396 字,大约阅读时间需要 4 分钟。

1 #include 
2 #include
3 #include
4 #include
5 #define Max 0x7f7f7f7f 6 using namespace std; 7 struct node 8 { 9 int x; 10 int y; 11 int time ; 12 friend bool operator < ( node a,node b) 13 { 14 return a.time>b.time;//开始错在这个地方了,感觉这里好怪啊,这个排序的东西我在单独写篇吧 15 } 16 }; 17 int dir[4][2]={
{
1,0},{-1,0},{
0,-1},{
0,1}}; 18 char map[205][205]; 19 int visited[205][205]; 20 int ans[205][205]; 21 int n,m; 22 23 void bfs(int x,int y) 24 { 25 memset(visited,0,sizeof(visited)); 26 memset(ans,Max,sizeof(ans)); 27 priority_queue
que; 28 node head,tail,tmp; 29 head.x=x; 30 head.y=y; 31 head.time=0; 32 que.push(head); 33 visited[x][y]=1; 34 ans[x][y]=0; 35 while(!que.empty()) 36 { 37 tmp=que.top(); 38 que.pop(); 39 if(map[tmp.x][tmp.y]=='r') 40 { 41 return ; 42 } 43 for(int i=0;i<4;i++) 44 { 45 tail.x=tmp.x+dir[i][0]; 46 tail.y=tmp.y+dir[i][1]; 47 if(visited[tail.x][tail.y]==0 && tail.x>=0 && tail.x
=0 &&tail.y

我这里写的稍微有点复杂了,复杂在用了ans[][]来保存结果,其实不用这样,node 中的time已经保存了多要求的值了,所以改成 int bfs(),在适当的地方返回一个正确的值就ok了

转载于:https://www.cnblogs.com/devil-91/archive/2012/08/16/2642448.html

你可能感兴趣的文章
开启HDR视觉盛宴:究竟什么视频算得上HDR?
查看>>
阿里云视频点播播放常见问题排查指南
查看>>
Java最全异常讲解
查看>>
Android保持屏幕常亮
查看>>
JS-DOM2级事件对象跨浏览器处理(已封装)
查看>>
用户名和密码校验程序
查看>>
浅析Java RTTI 和 反射的概念
查看>>
Django中用户权限模块
查看>>
Android TransitionDrawable:过渡动画Drawable
查看>>
keras实战项目——CIFAR-10 图像分类
查看>>
数据库变更管理
查看>>
隐私浏览器 Tor Browser 8.0.7 发布,安全更新版本
查看>>
Veeam发布2016年业绩: 同比增长28%,预订总收入达6.07亿美元
查看>>
慧荣科技发布全球首款商用SD 5.1控制器解决方案
查看>>
spark 计算结果写入mysql 案例及常见问题解决
查看>>
杨博:医疗大数据服务任重道远
查看>>
Mysql复制技术中的主键冲突
查看>>
iptables
查看>>
算法训练 删除数组零元素
查看>>
2014牡丹江网络zoj3816Generalized Palindromic Number(dfs或者bfs)
查看>>