一个人的旅行

Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)

Total Submission(s) : 18   Accepted Submission(s) : 16

Problem Description

虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训练啊,所以草儿决定在要在最短的时间去一个自己想去的地方!因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车(好可怜啊~)。

Input

输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个; 接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=<(a,b)<=1000;a,b 之间可能有多条路) 接着的第T+1行有S个数,表示和草儿家相连的城市; 接着的第T+2行有D个数,表示草儿想去地方。

Output

输出草儿能去某个喜欢的城市的最短时间。

Sample Input

6 2 3

1 3 5

1 4 7

2 8 12

3 8 4

4 9 12

9 10 2

1 2

8 9 10

Sample Output

9

用0来表示家 到附近的城市的距离为0 用一次Dijkstra即可。

#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 1010;
int a[maxn][maxn],dis[maxn];
bool vis[maxn];
int T,S,D,n;
void init()
{for(int i=0;i<maxn;i++)for(int j=0;j<maxn;j++)if(i==j) a[i][j] = 0;else a[i][j] = INF;return ;
}
void Dijkstra()
{memset(vis,0,sizeof(vis));vis[0]=1;for(int i=0;i<=n;i++)dis[i]=a[0][i];for(int i=1;i<=n;i++){int minn=INF,pos;for(int j=1;j<=n;j++){if(!vis[j]&&dis[j]<minn){pos=j;minn=dis[j];}}vis[pos]=true;for(int j=1;j<=n;j++){if(dis[pos]+a[pos][j]<dis[j]&&!vis[j])dis[j]=dis[pos]+a[pos][j];}}return ;
}
int main()
{while(~scanf("%d%d%d",&T,&S,&D)){n=0;init();int x,y,z;while(T--){scanf("%d%d%d",&x,&y,&z);n=max(max(n,x),y);if(z<a[x][y]) a[x][y]=a[y][x]=z;}while(S--){scanf("%d",&x);a[0][x]=a[x][0]=0;}Dijkstra();int mini=INF;for(int i=0;i<D;i++){scanf("%d",&x);mini=min(mini,dis[x]);}printf("%d\n",mini);}return 0;
}

hdu-2066(Dijkstra)相关推荐

  1. 手撕迪杰斯特拉算法(Dijkstra)及代码(附图解)

    文章目录 迪杰斯特拉(Dijkstra)算法 1.算法思想及其步骤 2.代码 2.1 相关声明 2.2 有权图的建立函数定义 2.3 核心算法:迪杰斯特拉 迪杰斯特拉(Dijkstra)算法 引言:我 ...

  2. 迪克斯特拉(Dijkstra)算法之MATLAB实现

    by WC 1.12.2016 1. 迪克斯特拉(Dijkstra)算法 在网上面看了很多的解释,仍没有感觉到有非常通熟易懂的解释,在这里我为大家讲解一下,尽量避免枯燥难懂的数学公式. 狄克斯特拉算法 ...

  3. 迪杰斯特拉(Dijkstra)算法之两点之间的最短距离问题

    1.概述 (1)与弗洛伊德(Floyd)算法一样,迪杰斯特拉(Dijkstra)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法,主要特点是以出发点为中心向外层层扩展(广度优先搜索思想),直到扩 ...

  4. Java图结构-模拟校园地图-迪杰斯特拉(Dijkstra)算法求最短路径 #谭子

    目录目录 一.前言 二.模拟校园地图描述 三.分析题目及相关绘图 四.代码部分 1.GraphNode类 2.Menu类(管理文字) 3.Attraction类 4.AttractionGraph类( ...

  5. 浅谈迪杰斯特拉(Dijkstra)算法和A*算法原理及实现

    写在前面 最近我在学习一门名叫<智能自主机器人及系统>的课程,虽然跟过去所学的<机器人学>在部分内容上有所重复,但该课程的应用性更强.对于不同的机器人,如差速轮式车.四轮车.四 ...

  6. hdu 2224(dp)

    hdu 2224 (1)题意: 从1找一条到n的路径(路径上的前一个节点的编号小于后一个节点的编号), 然后找一条从n到1的路径,(路径上的前一个节点的编号大于后一个节点的编号)要求这两条路径遍历所有 ...

  7. 数据结构——迪杰斯特拉(Dijkstra)算法

    迪杰斯特拉算法又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题.迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点 ...

  8. 最短路——小木乃伊到我家(dijkstra)

    题目链接 最短路--小木乃伊到我家(dijkstra) 题目描述 AA的欧尼酱qwb是个考古学家,有一天qwb发现了只白白圆圆小小的木乃伊,它是个爱哭鬼却很努力.qwb想把这么可爱的小木乃伊送给 AA ...

  9. 迪杰斯特拉算法(Dijkstra)求最短路径Python

    迪杰斯塔拉(Dijkstra)算法求最短路径 序 关于Dijkstra Dijkstra算法讲解 Dijkstra算法的弊端 第一步:进行初始化 第二步:主程序开始 又是初始化 核心的核心[^5] 最 ...

  10. 最短路径算法-迪杰斯特拉(Dijkstra)

    迪杰斯特拉(Dijkstra) 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法.一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径 ...

最新文章

  1. 嵌入式linux编程,嵌入式Linux学习笔记 - 嵌入式Linux基础知识和开发环境的构建_Linux编程_Linux公社-Linux系统门户网站...
  2. 参数估计_数据分析|统计之一个总体参数估计(附代码)
  3. 网络工程师职业发展路线图
  4. C#调试中,在VS的输出窗口或即时窗口显示消息
  5. VC++连接Mysql
  6. 积跬步,聚小流-------一个登录中的知识点
  7. 注册后自动登录 php,php – 自动注册后用户身份验证
  8. java ==和===_java中==和equals的区别详解
  9. html css控制优先级,css权重及优先级问题_html/css_WEB-ITnose
  10. MsSQL SQLServer 查询 表中字段的及类型是否为空
  11. [python3 - package] lxml
  12. tomcat配置管理员帐号密码
  13. 用 toto 快速建轻量级博客
  14. PPT过大怎么压缩?这种方法务必收藏
  15. 哈工大c语言作业,哈工大c语言-练习题
  16. 微信小程序获取当前日期及时间
  17. Nginx 之 realip模块 使用详解
  18. 《数据结构》物联1131-1132同学链接
  19. 搭建开源的运维工单平台
  20. 基于手机支付方式的电子商务网站

热门文章

  1. 第二周冲刺第四天个人博客
  2. 第五百八十天 how can I 坚持
  3. ab ApacheBench web测试工具
  4. python基础教程第3章——字符串
  5. socket编程之select()
  6. 剑指offer-week1
  7. C++类对象在内存中的布局
  8. 简单说说Linux中valgrind进行内存检测
  9. 多径信道理论的直观感受与MATLAB仿真
  10. php mysql explain_Mysql分析-explain的详细介绍