HDU 2066 一个人的旅行 (Dijkstra算法)
一个人的旅行
Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 5 Accepted Submission(s) : 2
接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=<(a,b)<=1000;a,b 之间可能有多条路)
接着的第T+1行有S个数,表示和草儿家相连的城市; 接着的第T+2行有D个数,表示草儿想去地方。
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int INF = ;
int e[][];
int d[];
int a[];
int v[];
int t, s, dd;
int n = ;
void dijkstra()
{
int i,k,j;
for (i = ; i <= n; i++)
{
d[i] = e[][i];//d数组用来存储i点到0点的最短时间
}
for (i = ; i <=n-; i++)
{
int min = INF;
for (j = ; j <= n; j++)
{
if (v[j] == && d[j] < min)
{//跳出离0点最近的点并且曾经没被挑
min = d[j];
k = j;
}
}
v[k] = ;//标记已被挑过
for (j = ; j <= n; j++)
{
if (d[j] > d[k] + e[k][j])//利用k点对各个点松弛
{
d[j] = d[k] + e[k][j];
}
}
} }
int main()
{
int i, j, k, x, y;
while (cin >> t >> s >> dd)
{
memset(v, , sizeof(v));
for (i = ; i <= ; i++)
{
for (j = ; j <= ; j++)
{
if (i == j) e[i][j] = ;
else e[i][j] = INF;
}
}
d[] = ;
for (i = ; i <= t; i++)
{
cin >> x >> y >> k;
if (x > n) n = x;
if (y > n) n = y;
if (e[x][y] > k)//两城市之间可能有多班公交
{
e[x][y] = k;
e[y][x] = k;
}
}
for (i = ; i <= s; i++)
{
cin >> x;
d[x] = ;
e[][x] = ;
e[x][] = ;
}
for (i = ; i <= dd; i++)
{
cin >> a[i];//存放目的地
}
dijkstra();
int min = INF;
for (i = ; i <= dd; i++)
{//遍历每个目的地,挑出时间最短的
if (d[a[i]] < min)
min = d[a[i]];
}
cout << min << endl;
}
return ;
}
1 3 5
1 4 7
2 8 12
3 8 4
4 9 12
9 10 2
1 2
8 9 10
HDU 2066 一个人的旅行 (Dijkstra算法)的更多相关文章
- hdu 2066 一个人的旅行 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题意分析:以草儿家为原点,给出城市间相互抵达的时间,给出草儿想去的城市,求最短时间.典型的单源最 ...
- hdu 2066 一个人的旅行(dijkstra)
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- hdu 2066 一个人的旅行
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2066 一个人的旅行 Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷 ...
- hdu 2066 一个人的旅行 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题目意思:给出T条路,和草儿家相邻的城市编号,以及草儿想去的地方的编号.问从草儿家到达草儿想去的 ...
- HDU - 2066 一个人的旅行(最短路径)(模板)
d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到这个城市的距离设为0),草儿想去的地方有D个: 求D个城市中距离草儿家最近的距离. s.进行1次单源最短路,找出 ...
- 【hdu 2544最短路】【Dijkstra算法模板题】
Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况.它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, ...
- HDU 2066 一个人的旅行(dijkstra水题+判重边)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题目大意:输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有 ...
- HDU 2066 一个人的旅行【Dijkstra 】
题意:给出s个起点,d个终点,问从这些起点到达终点的最短距离 因为有多个起点,所以把这多个起点的值设为0 哎= =改了好久的说= = 是因为在代码里面的t,不知道为什么调用dijkstra()函数之后 ...
- hdu - 2066 一个人的旅行(基础最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=2066 把与草儿相连的城市最短距离置为0,然后进行dijkstra,在t个城市里找出距离最近的一个即可. #inc ...
随机推荐
- Java——线程同步
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- Python 常用扩展库(八)
- Obtain older GMT versions
ftp://ftp.soest.hawaii.edu/gmt/legacy/
- 如何从ie11降到ie9
如果你是win7,中间没有安装过IE10的话,在系统已安装的更新中找到IE11右键卸载后就会回滚到IE9. ie11浏览器现在win7和win8版本的都已经发布了;但是因为一些12306火车票订票网站 ...
- Iview同步异步验证
直接上代码了: html: <Form ref="termForm" :model="currentData" :rules="ruleTerm ...
- Linux下Bind error: Address already in use处理
发生这种问题是由于端口被程序绑定而没有释放造成. 可以使用netstat -lp查询当前处于连接的程序以及对应的进程信息. 如果只想查看指定端口,可以输入netstat -lp | grep 9877 ...
- Linux shell —— 数组与关联数组
使用 declare -A(declare 的用法请使用 help 进行查看,help declare) 进行声明关联数组变量: $ declare -A fruits_price $ fruits_ ...
- 51Nod:完美字符串
约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同. ...
- Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined
遇到问题: Android NDK: jni/Android.mk: Cannot find module with tag 'XXXXXXXXX' in import path Android ND ...
- 《DSP using MATLAB》Problem 4.17