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 ...
随机推荐
- 常用docker
随便什么版本的linux 接入daocloud.io 在发现镜像中选择DockerHub 搜索对应的image,然后部署. 手动输入YAML即可 aria: image: cuteribs/aria2 ...
- Django(一)创建和启动项目
1,使用pycharm 2,新建工程使用django框架 location 最后一个文件夹名就是project名,我用了DjangoProject. Application 是自动加入的APP名字,我 ...
- 线程局部存储TLS
1 .使用线程局部存储的理由 当我们希望这个进程的全局变量变为线程私有时,而不是所有线程共享的,也就是每个线程拥有一份副本时,这时候就可以用到线程局部存储(TLS,Thread Local Stora ...
- 动态链接库DLL_第1篇
动态链接库通常不能直接运行,也不能接收消息.它们是一些独立的文件,其中包含能被可执行程序或其他DLL调用来完成某项工作的函数.只有在其他模块调用动态链接库中的函数时,它才发挥作用.实际编程时,可把完成 ...
- hibernate缓存清除(转)
文章有点杂,这不是原文,谢谢贡献者 http://www.360doc.com/content/16/0413/16/32415095_550307388.shtml 一.hibernate一级缓存( ...
- windows下清除svn密码
刚进公司的时候没有SVN账号,暂用别人的账号很平常,为了更好的代码管理,后面肯定用自己的账号. 那么怎么清除呢. 进入 C:\Documents and Settings\Administrator\ ...
- 在eclipse中创建web项目(非myeclipse)
如何创建dynamic web project项目 本文的演示是从本地文件创建dynamic web project,从svn检出的同时创建dynamic web project于此类似.我们推荐使用 ...
- SVN 将主干的代码合并到分支上
来源:http://blog.csdn.net/u012701023/article/details/50978154 问题:开发有了项目主干,再次基础上起了一个分支,开发新的功能:因为业务需要,在上 ...
- Linux(CentOS)搭建SVN服务器
1.安装命令 yum -y install subversion 查看SVN安装位置 rpm -ql subversion 查看SVN版本 svnserve --version 2.创建版本库根目录( ...
- LeetCode-Microsoft-Add Two Numbers II
You are given two non-empty linked lists representing two non-negative integers. The most significan ...