一个人的旅行

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 31420    Accepted Submission(s): 10804



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
 

思路1:Dijkstra算法(链接附讲解)

AC代码:

#include<bits/stdc++.h>
#define N 1005
#define inf 9999999
using namespace std; int e[N][N], dis[N],book[N]; void dijkstra(int n) {
int i, j, k, Min;
memset(book, 0, sizeof(book));
//初始化某点的最短路径
for (i = 0; i <= n; ++i)dis[i] = e[0][i];
book[0] = 1;
for (k = 1; k <= n; ++k) {
Min = inf;
for (i = 1; i <= n; ++i)
if (!book[i] && dis[i] < Min)Min = dis[i], j = i;
book[j] = 1;
for (i = 1; i <= n; ++i)
if (!book[i] && dis[i] > e[j][i] + dis[j])
dis[i] = e[j][i] + dis[j];
}
}
int main() {
int t, s, d, Min, u, v, w, n; while (cin >> t >> s >> d) {
memset(e, inf, sizeof(e));
for (int i = 0; i < N; ++i)e[i][i] = 0;
n = 0;
//输入城市间路径与时间
while (t--) {
cin >> u >> v >> w;
//因为有些路径是给了多次,取最小的
if (e[u][v] > w)e[u][v] = e[v][u] = w;
n = max(n, max(u, v));
}
//相邻城市距离为0
while (s--) {
cin >> v;
e[0][v]= e[v][0] = 0;
}
dijkstra(n);
Min = inf;
while (d--) {
cin >> v;
Min = min(Min, dis[v]);
}
cout << Min << endl;
}
return 0;
}

#2066:一个人的旅行(Dijkstra算法入门题)的更多相关文章

  1. HDU 2066 一个人的旅行 (Dijkstra算法)

    一个人的旅行 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  2. 【hdu 2544最短路】【Dijkstra算法模板题】

    Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况.它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, ...

  3. POJ - 1469 COURSES (匈牙利算法入门题)

    题意: P门课程,N个学生.给出每门课程的选课学生,求是否可以给每门课程选出一个课代表.课代表必须是选了该课的学生且每个学生只能当一门课程的. 题解: 匈牙利算法的入门题. #include < ...

  4. hdu 2066 一个人的旅行 Dijkstra

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题意分析:以草儿家为原点,给出城市间相互抵达的时间,给出草儿想去的城市,求最短时间.典型的单源最 ...

  5. 最短路径Dijkstra算法模板题---洛谷P3371 【模板】单源最短路径(弱化版)

    题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779. 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入格式 第一行 ...

  6. ACM: HDU 3790 最短路径问题-Dijkstra算法

    HDU 3790 最短路径问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Des ...

  7. poj2387 Til the Cows Come Home 最短路径dijkstra算法

    Description Bessie is out in the field and wants to get back to the barn to get as much sleep as pos ...

  8. hdu2544 最短路 Dijkstra算法

    最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  9. 一个人的旅行(hdu2066)Dijkstra算法模版

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

  10. 一个人的旅行(用小技巧转化为dijkstra算法)

    注意: 1:因为两点之间可能有多条路,所以更新路径长度的时候做一次判断 if(time < mat[a][b]) mat[a][b] = mat[b][a] = time; 2:因为主函数中的数 ...

随机推荐

  1. IDEA安装与配置教程

    一.下载并安装IDEA 1.下载 1.官网: 下载 IntelliJ IDEA (这里以Windows系统为例,其他系统类似) 2.安装 1.下载完成后,直接点击安装包安装,即可. 2.开始安装,然后 ...

  2. centos虚拟机安装

    目录 一.准备工作 1.vmware workstation软件安装 2.准备ios镜像 二.创建Centos虚拟机 三.进行Centos7的系统安装 四.虚拟机快照的使用 1.创建虚拟机快照 2.还 ...

  3. SSPRQ码型设计

    serdes速率超过50G之后,在VSR光模块场景下SSPRQ使用较为广泛.SSPRQ用于PAM4光模块眼图压力,闭合率测试. 但是有很多serdes IP不支持此功能.出于测试需要需要新设计SSPR ...

  4. springcloud+nacos项目启动后,登陆连接服务器时超时:Connection timed out no further information

    问题现象:项目启动后,登陆连接服务器时超时:Connection timed out no further information 192.168.42.190:4004 原因:我的配置有问题,在na ...

  5. [ABC274G] Security Camera 3

    Problem Statement There is a grid with $H$ rows from top to bottom and $W$ columns from left to righ ...

  6. 2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号, 纸条上共有n个整数ai,其中a1表示密码里第一个字母的编号, 若i>1的

    2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号, 纸条上共有n个整数ai,其中a1表示密码里第一个字母的编号, 若i> ...

  7. 第一行代码 Android 第三版读后感

    <第一行代码Android 第三版>是一本非常好的Android开发入门书籍.本书结合作者的丰富经验和实际案例,通过一步一步的介绍,详细地讲解了Android开发的各个方面,包括Andro ...

  8. .NET周刊【12月第1期 2023-12-06】

    国内文章 .NET 与 OpenEuler 共展翅,昇腾九万里 https://www.cnblogs.com/shanyou/p/17858385.html 本文介绍了openEuler操作系统,它 ...

  9. Java反射,看完就会用

    什么是反射 在说反射概念之前,我们先说另外2个概念:编译期和运行期. 编译期: 编译期是源代码从文本形式转换为字节码的过程,这发生在Java代码被JVM执行之前. 在编译期,编译器对源代码进行语法检查 ...

  10. 尚医通项目学习若依+springboot+springsecurity+redis+fastjson

    尚医通 [基于若依快速开发医疗系统] 主要内容 学习目标 项目简介 一款医疗平台. 系统包含:系统管理.药品进销存管理.看病就诊.收费管理.检查管理.数据统计等. 涉及技术 SpringBoot.My ...