hdu-2066(Dijkstra)
一个人的旅行
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)相关推荐
- 手撕迪杰斯特拉算法(Dijkstra)及代码(附图解)
文章目录 迪杰斯特拉(Dijkstra)算法 1.算法思想及其步骤 2.代码 2.1 相关声明 2.2 有权图的建立函数定义 2.3 核心算法:迪杰斯特拉 迪杰斯特拉(Dijkstra)算法 引言:我 ...
- 迪克斯特拉(Dijkstra)算法之MATLAB实现
by WC 1.12.2016 1. 迪克斯特拉(Dijkstra)算法 在网上面看了很多的解释,仍没有感觉到有非常通熟易懂的解释,在这里我为大家讲解一下,尽量避免枯燥难懂的数学公式. 狄克斯特拉算法 ...
- 迪杰斯特拉(Dijkstra)算法之两点之间的最短距离问题
1.概述 (1)与弗洛伊德(Floyd)算法一样,迪杰斯特拉(Dijkstra)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法,主要特点是以出发点为中心向外层层扩展(广度优先搜索思想),直到扩 ...
- Java图结构-模拟校园地图-迪杰斯特拉(Dijkstra)算法求最短路径 #谭子
目录目录 一.前言 二.模拟校园地图描述 三.分析题目及相关绘图 四.代码部分 1.GraphNode类 2.Menu类(管理文字) 3.Attraction类 4.AttractionGraph类( ...
- 浅谈迪杰斯特拉(Dijkstra)算法和A*算法原理及实现
写在前面 最近我在学习一门名叫<智能自主机器人及系统>的课程,虽然跟过去所学的<机器人学>在部分内容上有所重复,但该课程的应用性更强.对于不同的机器人,如差速轮式车.四轮车.四 ...
- hdu 2224(dp)
hdu 2224 (1)题意: 从1找一条到n的路径(路径上的前一个节点的编号小于后一个节点的编号), 然后找一条从n到1的路径,(路径上的前一个节点的编号大于后一个节点的编号)要求这两条路径遍历所有 ...
- 数据结构——迪杰斯特拉(Dijkstra)算法
迪杰斯特拉算法又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题.迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点 ...
- 最短路——小木乃伊到我家(dijkstra)
题目链接 最短路--小木乃伊到我家(dijkstra) 题目描述 AA的欧尼酱qwb是个考古学家,有一天qwb发现了只白白圆圆小小的木乃伊,它是个爱哭鬼却很努力.qwb想把这么可爱的小木乃伊送给 AA ...
- 迪杰斯特拉算法(Dijkstra)求最短路径Python
迪杰斯塔拉(Dijkstra)算法求最短路径 序 关于Dijkstra Dijkstra算法讲解 Dijkstra算法的弊端 第一步:进行初始化 第二步:主程序开始 又是初始化 核心的核心[^5] 最 ...
- 最短路径算法-迪杰斯特拉(Dijkstra)
迪杰斯特拉(Dijkstra) 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法.一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径 ...
最新文章
- 嵌入式linux编程,嵌入式Linux学习笔记 - 嵌入式Linux基础知识和开发环境的构建_Linux编程_Linux公社-Linux系统门户网站...
- 参数估计_数据分析|统计之一个总体参数估计(附代码)
- 网络工程师职业发展路线图
- C#调试中,在VS的输出窗口或即时窗口显示消息
- VC++连接Mysql
- 积跬步,聚小流-------一个登录中的知识点
- 注册后自动登录 php,php – 自动注册后用户身份验证
- java ==和===_java中==和equals的区别详解
- html css控制优先级,css权重及优先级问题_html/css_WEB-ITnose
- MsSQL SQLServer 查询 表中字段的及类型是否为空
- [python3 - package] lxml
- tomcat配置管理员帐号密码
- 用 toto 快速建轻量级博客
- PPT过大怎么压缩?这种方法务必收藏
- 哈工大c语言作业,哈工大c语言-练习题
- 微信小程序获取当前日期及时间
- Nginx 之 realip模块 使用详解
- 《数据结构》物联1131-1132同学链接
- 搭建开源的运维工单平台
- 基于手机支付方式的电子商务网站