2018-5-1

今天抽时间看了最短路的几种算法:

这道题目用的是Dijkstra算法,算法的主要思想是按照路径长度递增的次序产生最短路径。

对于这个题目而言,需要注意的是:
1)赋值是双向的,比如说a,b之间有一条要花费time时间的路,那么我们需要将x[a][b]与x[b][a]都赋值为time。
2)有重边:对于这种情况我们需要取最小的边。
3)多源转换为单源:其实也就等同于0点到所有的起始点的距离为0,可以转换成只要求出以0为起始点的到所有目标点的距离的最小值。

#include<iostream>
#include<cstring>
#define inf 0x3f3f3f3f
using namespace std;const int N = 1000;
bool vis[N+1];
int target[N+1];
int dis[N+1],x[N+1][N+1],start[N+1];
int t,s,d,n,res;void dijkstra(){int i,j,min_dis,min_point;for (i=1;i<=n;i++) dis[i]=inf;vis[0]=true;for (i=0;i<=n;i++){dis[i]=x[0][i];}for (i=0;i<n;i++){min_dis=inf;min_point=0;for (j=1;j<=n;j++){if (!vis[j]&&dis[j]<min_dis){min_dis=dis[j];min_point=j;}}     vis[min_point]=true;for (j=1;j<=n;j++){if (!vis[j]&&(x[min_point][j]+min_dis<dis[j])){dis[j]=x[min_point][j]+min_dis;}}}
}int main(){int i,j,a,b,tim;while (cin>>t>>s>>d){for (i=0;i<=N;i++){for (j=0;j<=N;j++){x[i][j]=inf;}}memset(vis,false,sizeof(vis));n=0;res=inf;for (i=1;i<=t;i++){cin>>a>>b>>tim;x[a][b]=x[a][b]<tim?x[a][b]:tim;x[b][a]=x[a][b]<tim?x[a][b]:tim;n=max(max(a,b),n);}for (i=1;i<=s;i++){cin>>start[i];x[0][start[i]]=0;x[start[i]][0]=0;}for (i=1;i<=d;i++){cin>>target[i];}dijkstra();for (i=1;i<=d;i++){res=min(res,dis[target[i]]);}cout<<res<<endl;}return 0;
}

HDU杭电2066 - 一个人的旅行(Dijkstra算法)相关推荐

  1. 杭电2066一个人的旅行(spfa)

    一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  2. 杭电2066一个人的旅行

    一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. 杭电 2066 一个人的旅行 最短路 Dijstra

    一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. 杭电1042c语言循环,HDU杭电1052 Tian Ji - The Horse Racing答题报告

    HDU杭电1052 Tian Ji -- The Horse Racing解题报告 本人第一次写博客,希望各位大神多多指导与包涵,不足的地方还请指出,新手在此谢过啦!!! 题目描述: Time Lim ...

  5. 杭电OJ第11页2065~2069算法题(C语言)

    目录 2065."红色病毒"问题 2066.一个人的旅行 2067.小兔的棋盘 2068.RPG的错排 2069.Coin Change 2065."红色病毒" ...

  6. 杭电OJ第11页2075~2079算法题(C语言)

    目录 2075.A|B? 2076.夹角有多大 2077.汉诺塔IV 2078.复习时间 2079.选课时间 2075.A|B? Problem Description 正整数A是否能被正整数B整除, ...

  7. 杭电OJ第11页2035~2039算法题(C语言)

    目录 2035.人见人爱A^B 2036.改革春风吹满地 2037.今年暑假不AC 2038.Message 2039.三角形 2035.人见人爱A^B Problem Description 求A^ ...

  8. 杭电OJ第11页2085~2089算法题(C语言)

    目录 2085.核反应堆 2086.A1 = ? 2087.剪花布条 2088.Box of Bricks 2089.不要62 2085.核反应堆 Problem Description 某核反应堆有 ...

  9. HDU杭电OJ经典100题2000-2099_Java版详细题解(持续更新)

    今年寒假打算用Java把杭电2000-2099全部AC(现在持续更新),如下是题目链接,之后是我的题解,全部做完后我会把所有AC的题解打包上传的 题号 题名 题号 题名 2000 ASCII码排序 2 ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task07. 合并两个有序链表
  2. 机器学习笔记十:各种熵总结
  3. [知识储备]用RequireJS +zepto开发微信公众号
  4. Silverlight实例_人立方
  5. js的变量作用域 ,变量提升
  6. 用SAPI实现Speech Recognition(SR) - 听写模式
  7. python json dumps utf8_Python2操作JSON出现乱码的解决方案
  8. React开发(118):报错处理
  9. js网页顶部线性页面加载进度条,jquery头部线性进度条总结
  10. [数字dp] hdu 3271 SNIBB
  11. 编程计算二叉树中某结点的层数
  12. 电气工程和自动化哪个专业就业前景好?
  13. 情人节送男生什么礼物好?2022情人节礼物推荐
  14. Authorization Basic认证 笔记
  15. AM335x 如何修改phy及双网络使用说明(精华!!!)
  16. 怎样用好CorelDRAW中的位图颜色遮罩
  17. 线性回归、lasso回归、岭回归以及弹性网络的系统解释
  18. 能上qq但是打不开网页-详解DNS
  19. 如何在局域网内实现文件夹共享
  20. PES包的PTS详解

热门文章

  1. 西湖大学生命学院章永登实验室 (超分辨成像)科研团队招聘启事
  2. 精选| 2020年12月R新包推荐(第49期)
  3. Seurat亮点之细胞周期评分和回归
  4. 拥有Mac的你怎么可以不知道Downie,Downie4最新更新「安装与使用」
  5. 小程序滑动到底部进行分页的功能实例
  6. Forbidden You don't have permission to access / on this server.解决方法
  7. react中@withrouter_为什么 withRouter 高阶组件应该 处于最外层?
  8. 华为鸿蒙系统真的好吗,鸿蒙系统真的成熟吗?华为还有很长的路要走
  9. 虚拟机CentOS8 网络配置
  10. linux中dpkg找不到命令_工作中常用的Linux命令介绍与实践