HDU2066---------Dijkstra算法代码
hdu2066:http://acm.hdu.edu.cn/showproblem.php?pid=2066
这道题其实一次Dijkstra就可以了,我们将草儿的家看做0,从草儿家到相邻镇的花费看做0,那么我们就只需要求草儿家到各个目的地的最短路即可,一次Dijkstra便可解决
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int inf = 1<<30;
int T,S,D,n;
int map[1111][1111];
int vis[1111],cast[1111];
int s[1111],e[1111];
void Dijkstra()
{
int i,j,minn,pos;
memset(vis,0,sizeof(vis));
vis[0] = 1;
for(i = 0; i<=n; i++)
cast[i] = map[0][i];
for(i = 1; i<=n; i++)
{
minn = inf;
for(j = 1; j<=n; j++)
{
if(cast[j]<minn && !vis[j])
{
pos = j;
minn = cast[j];
}
}
vis[pos] = 1;
for(j = 1; j<=n; j++)
{
if(cast[pos]+map[pos][j]<cast[j] && !vis[j])
cast[j] = cast[pos]+map[pos][j];
}
}
}
int main()
{
int i,j,x,y,z,start,end;
while(~scanf("%d%d%d",&T,&S,&D))
{
n = 0;
for(i = 0; i<1111; i++)
{
for(j = 0; j<1111; j++)
map[i][j] = inf;
map[i][i] = 0;
}
while(T--)
{
scanf("%d%d%d",&x,&y,&z);
n = max(max(n,x),y);
if(z<map[x][y])
map[x][y] = map[y][x] = z;
}
int minn = inf;
for(i = 0; i<S; i++)
{
scanf("%d",&s[i]);
map[0][s[i]] = map[s[i]][0] = 0;
}
for(i = 0; i<D; i++)
scanf("%d",&e[i]);
Dijkstra();
for(i = 0; i<D; i++)
minn = min(minn,cast[e[i]]);
printf("%d\n",minn);
}
return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/libin56842/article/details/16919583
HDU2066---------Dijkstra算法代码相关推荐
- dijkstra算法代码_数据科学家需要知道的5种图算法(附代码)
在本文中,我将讨论一些你应该知道的最重要的图算法,以及如何使用Python实现它们. 作者:AI公园 导读 因为图分析是数据科学家的未来. 作为数据科学家,我们对pandas.SQL或任何其他关系数据 ...
- dijkstra算法代码_深度好文:改变了我们生活方式最有影响力的5种图算法
作者:Rahul Agarwal编译:刘静图灵联邦编辑部出品本文作者Rahul Agarwal是一位数据科学家,近期,他在Medium上分享了常用的5种图算法的介绍和代码实现.以下是具体博文内容:作为 ...
- java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...
最近在复习java,下学期要用,写这个练手. 技术较粗糙,见谅. 代码里用的是这幅地图,根据实际情况更改,在addNode方法中 这个是运行结果,起点和终点在 运行wrap(String qidia ...
- 03 最短路 dijkstra算法spfa算法floyd算法(附带实例代码) 图论-1
文章目录 最短路 邻接表的图如下 邻接矩阵如下图 链表实现邻接表实现代码 单源最短路径 Dijkstra 算法 朴素版本 Dijkstra 实现代码 堆优化的dijkstra算法代码实现 Bellma ...
- 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)
Dijkstra算法是用来求解从某个源点到其他各顶点的最短路径(单源最短路径). 下面的Dijkstra算法的讲解都是基于这个有向图,在遇到其他问题可以类比. 算法的基本思想: 把图中的定点分成两组, ...
- dijkstra算法matlab程序_Dijkstra算法例子
在Dijkstra算法代码下载本文涉及到的代码. 程序代码 Dijkstra算法的程序如下: function [d, p] = dijkstra(adj, s, t) % 使用dijkstra求最短 ...
- **Dijkstra算法**
1.什么是Dijkstra算法 杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短 ...
- Dijkstra算法求解单源最短路径问题
文章目录 一 前言 二 Dijkstra 算法讲解 1. 贪心算法的证明 2. 算法实现说明 3. 初版Dijkstra算法代码 三 时间复杂度优化 1. 优化策略 2. 优化后的代码 四 结语 一 ...
- 单源最短路径dijkstra算法
介绍 dijkstra算法也是解决单源最短路径问题的一种方法.它要求图中路径都是非负的.而且,它的效率要高于bellman算法. 实现 首先定义图的结点信息和边信息. struct _Node;typ ...
- 最短路问题之单源最短路-Dijkstra算法
一个点(源点)到其余各个顶点的最短路径,叫做单源最短路经. 例如求下图中的1号顶点到2,3,4,5,6号顶点的最短路径. 使用二维数组e来存储顶点之间边的关系,初始值如下表. e 1 2 3 4 5 ...
最新文章
- 快卷疯了!被面试官说我是今天第5个背八股文的。。。
- RocketMQ之Pull消费者客户端启动
- 每天天一个linux命令echo,每天一个linux命令-echo(示例代码)
- MOSSE目标跟踪算法的理解
- [Redux/Mobx] Redux怎么添加新的中间件?
- Spring Boot 热部署 devtools模块
- ubuntu安装python3、setuptools、ipython
- PostgreSQL 的 target_list分析(一)
- java数组为什么可以迭代吗_另一个“只能迭代数组或java.lang.Iterable实例”的问题...
- 10项技能让前端开发者价值百万!
- 201612-2工资计算
- tf.image.resize_images
- vmware的xp虚拟机更改虚拟硬盘序列号
- java 如何调用类库_Java中怎么调用类库?
- D1: elevater design
- 最好的输入法--陈桥五笔5.806(绿色可自动卸载版)
- python编译原理 书籍_如何想学点编译原理,又不想直接看龙虎之类的书籍,太多理论,干燥?...
- uniapp小程序自定义分享按钮
- 怎么制作打印机服务器,如何配置打印机服务器设置
- python自制简易二维码代码_用python把自己的二维码制作成动态码,一行代码即可搞定!敲简单!...
热门文章
- 解决hadoop:未找到命令;hadoop:未找到命令问题
- c++ vector 一部分_要去|原创TheShy要去SKT、小C会给阿水打辅助!各大战队面临重新洗牌...
- 玩转 Windows 10 中的 Linux 子系统
- pathon包傻瓜升级
- NI LabVIEW开发环境(2.生成installer安装程序exe)
- 计算机内存条多大容量,电脑内存条到底怎么选?选多大容量最合适?
- Unity 3d 摄像头
- 服务器w8系统如何重装,华硕w8系统重装图文教程
- 小学计算机社团活动安排,小学计算机社团活动计划
- java web工程中如何添加图片_java web中如何添加图片