博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2612(bfs)Find a way
阅读量:5279 次
发布时间:2019-06-14

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

题意:就是Y和M在@相遇的最短的时间。

思路:基本的广搜题,先Y搜一次,然后M搜一次,最后求出Y和M在@相遇的最短的时间。

代码实现:

#include
#include
#include
using namespace std;int n,m,count1[210][210],count2[210][210],visited[210][210];//count1记录的是Y到各个点的最短的时间int b[4][2]={
{
1,0},{-1,0},{
0,1},{
0,-1}};//count2记录的是M到各个点最短的时间char str[210][210];struct node{ int x; int y;};int nima(int x,int y){ if(x>=0&&x
=0&&y
q; p.x=x;p.y=y; q.push(p); if(flag==1) { while(!q.empty())//基本的广搜,此时我用的是队列,此前我用的一直是数组,还是队列好多了 { p=q.front(); q.pop(); for(int i=0;i<4;i++) { t1=p.x+b[i][0];t2=p.y+b[i][1]; if(nima(t1,t2)) { visited[t1][t2]=-1; temp.x=t1; temp.y=t2; q.push(temp); count1[t1][t2]=count1[p.x][p.y]+11; } } } } else { while(!q.empty()) { p=q.front(); q.pop(); for(int i=0;i<4;i++) { t1=p.x+b[i][0];t2=p.y+b[i][1]; if(nima(t1,t2)) { visited[t1][t2]=-1; temp.x=t1; temp.y=t2; q.push(temp); count2[t1][t2]=count2[p.x][p.y]+11; } } } }}int main(){ int i,j,x1,y1,x2,y2,a[40005][2],num,flag,min; while(scanf("%d%d",&n,&m)!=EOF) { getchar(); num=0;min=100000000; for(i=0;i
(count1[a[i][0]][a[i][1]]+count2[a[i][0]][a[i][1]])) min=count1[a[i][0]][a[i][1]]+count2[a[i][0]][a[i][1]]; } } printf("%d\n",min); } return 0;}

 

转载于:https://www.cnblogs.com/jiangjing/archive/2013/03/07/2947835.html

你可能感兴趣的文章
第六章 字节码执行方式--解释执行和JIT
查看>>
字符串方法title()、istitle()
查看>>
yield语句
查看>>
查看linux系统中占用cpu最高的语句
查看>>
[洛谷P1738]洛谷的文件夹
查看>>
ubuntu server设置时区和更新时间
查看>>
【京东咚咚架构演进】-- 好文收藏
查看>>
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
jQuery之end()和pushStack()
查看>>
Bootstrap--响应式导航条布局
查看>>
Learning Python 009 dict(字典)和 set
查看>>
JavaScript中随着鼠标拖拽而移动的块
查看>>
HDU 1021 一道水题
查看>>
The operation couldn’t be completed. (LaunchServicesError error 0.)
查看>>
php每天一题:strlen()与mb_strlen()的作用分别是什么
查看>>
工作中收集JSCRIPT代码之(下拉框篇)
查看>>
《转载》POI导出excel日期格式
查看>>
code异常处理
查看>>
git - 搭建最简单的git server
查看>>