HDU2066(Dijstra算法)
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
const int inf=0x3f3f3f3f;
const int maxx=1005;
int p[maxx];//标记前驱节点,但是这道题用不到
int dist[maxx];//记录源点到i之间的最短距离
int e[1005][1005];//记录路径
int n,m,t;
int vis[maxx];//标记这个点是否被走过
void Dijstra(){for(int i=0;i<=1000;i++){dist[i]=e[0][i];p[i]=0;}vis[0]=1;for(int i=1;i<1000;i++){int temp=inf;int t;for(int j=1;j<=1000;j++){if(!vis[j]&&dist[j]<temp){temp=dist[j];t=j;}}vis[t]=1;for(int j=1;j<=1000;j++){if(!vis[j]&&dist[j]>dist[t]+e[t][j]){dist[j]=dist[t]+e[t][j];p[j]=t;}}}
}
int main(){while(scanf("%d %d %d",&n,&m,&t)!=EOF){memset(p,0,sizeof(p));memset(vis,0,sizeof(vis));for(int i=0;i<=1001;i++){for(int j=0;j<=1001;j++){e[i][j]=inf;}}for(int i=0;i<n;i++){int a,b,cost;cin>>a>>b>>cost;e[a][b]=e[a][b]>cost?cost:e[a][b];//如果存在多条路径且保存最短的路径e[b][a]=e[a][b];}for(int i=0;i<m;i++){int x;scanf("%d",&x);e[0][x]=0;e[x][0]=0;//源点到相连城市之间距离为零}Dijstra();int mininf=inf;for(int i=0;i<t;i++){int x;scanf("%d",&x);if(mininf>dist[x]){mininf=dist[x];}}cout<<mininf<<endl;}return 0;
}
HDU2066(Dijstra算法)相关推荐
- poj2387(Dijstra算法)
这道题就是模版题,直接上代码: Dijstra算法 #include<iostream> #include<algorithm> #include<cmath> # ...
- Dijstra算法-------为了纪念,等以后看的时候方便
杭电problem2066 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total ...
- HDU1874(Dijstra算法)
#include<iostream> #include<algorithm> #include<cstring> #include<cmath> usi ...
- HDU2112(Flody算法和Dijstra算法)
采用Flody算法时一定要注意那个cnt的下标,我也是在这里卡了一定的时间,可能是我的经验还远远不够. 方法一: #include<iostream> #include<algori ...
- HDU2544(Dijstra算法)
#include<iostream> #include<algorithm> #include<cstring> #include<cmath> #in ...
- HDU3970(Dijstra算法)
#include<iostream> #include<algorithm> #include<cstring> #include<cmath> usi ...
- Dijstra算法求最短路径
参考博客:http://blog.51cto.com/ahalei/1387799 与Floyd-Warshall算法一样这里仍然使用二维数组e来存储顶点之间边的关系,初始值如下. ...
- [hiho 23]单源最短路-Dijstra算法
题目描述 维护一个集合,集合中的元素与点u的最短距离已经确定,求出集合内元素所能到达的点到点u的距离,取最短的距离对应的点加入集合直到集合包含点v. 每次更新距离只与新加入集合的点有关. #inclu ...
- java迪杰斯特拉算法实例,Java 图的最短路径dijstra(迪杰斯特拉)算法和拓扑排序
一.图的最短路径从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径 图的最短路径有许多重要的应用. 例如:上图中v0-v8有9个点,可以看做不同的地点,现在要规 ...
最新文章
- 使用 bcp 指定数据文件中的前缀长度
- 《Revisiting Salient Object Detection! Simultaneous Detection, Ranking, and Subitizing of Multiple Sa
- bom头解释方法和去掉方法
- 云服务器如何导入文件,如何将文件导入云服务器中
- 网络安全对现在乃至以后,对人们的安全有着重大的保障
- 裂变实操:1个模型+4个步骤,教你打造流量的自循环系统
- Java 中==和 equals 的区别, equals 和 hashCode 的区别
- Round Numbers
- Django Bootstrap开发笔记02 - 模板
- 智能化连锁门店解决方案
- 为什么说强化学习是针对优化数据的监督学习?
- ubuntu16.0.4安装mysql5.7以及设置远程访问
- 【MySQL】时间格式转换 DATE_FORMAT函数篇
- CentOS7 一键安装KMS服务【整理】
- Ubuntu16.04编译Android源码系列一——7.1.2和4.4及踩坑
- 怎么创建Gitee仓库,并将项目源码上传到Git?
- 第四篇:UE4视角切换节点,Possess和Set View Target With Blend的区别
- 百度网盘官方免费极速下载(不定期更新)
- python 调用航空公司的接口 获取机票数据 api简单案例
- c/c++ 报错:非标准语法,使用&创建指向成员的指针的解决办法