【hdu 2544最短路】【Dijkstra算法模板题】
Dijkstra算法
分析
Dijkstra算法适用于边权为正的情况。它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, 到所有结点的最短路(这样最后返回你想要的那个节点对应的距离即可)。 该算法同时适用于有向图和无向图。
其伪代码如下:
清除所有点的标号
设d[0]=0, 其他d[i]=INF //INF被定义为一个很大的数字
循环n次 {
在所有未标号结点中, 选出d值最小的结点x
给结点x标记
对于从x出发的所有边(x,y), 更新d[y] = min{d[y], d[x]+w(x,y)} //w(x,y)是指边xy对应的权值
}
模板
可以根据上面的伪代码帮助理解
int Dijk()
{
memset(vis, 0, sizeof(vis));
memset(d, 0, sizeof(d));
for(int i = 1; i <= N; i++)
d[i] = route[i][1]; //这里考虑的是1为起点,具体根据实际情况而定
for(int i = 1; i <= N; i++)
{
int x, minn = INF;
for(int j = 1; j <= N; j++)
{
if(!vis[j] && d[j] < minn) //在所有未标号结点中, 选出d值最小的结点x
{
minn = d[j];
x = j;
}
}
vis[x] = 1; //标记它
for(int y = 1; y <= N; y++)
d[y] = min(d[y], d[x] + route[x][y]);
}
return d[...]; //根据题意要求进行返回相应的值
}
int main()
{
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= N; j++)
{
if(i == j)
route[i][j] = 0;
else
route[i][j] = INF;
}
}
...处理route数组
//具体根据实际情况填写
...
Dijk();
}
以上内容参考自刘汝佳的《算法竞赛入门经典》
题目链接
AC代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 100 + 10;
const int INF = 0x3f3f3f3f;
int N, M;
int a, b, c;
int route[maxn][maxn], d[maxn];
int vis[maxn];
int Dijk()
{
memset(vis, 0, sizeof(vis));
memset(d, 0, sizeof(d));
for(int i = 1; i <= N; i++)
d[i] = ((i == 1) ? 0 : INF); //这里的条件设置根据题意自行判断
for(int i = 1; i <= N; i++)
{
int x, minn = INF;
for(int j = 1; j <= N; j++)
{
if(!vis[j] && d[j] < minn) //在所有未标号结点中, 选出d值最小的结点x
{
minn = d[j];
x = j;
}
}
vis[x] = 1; //标记它
for(int y = 1; y <= N; y++)
d[y] = min(d[y], d[x] + route[x][y]);
}
return d[N];
}
void init()
{
for(int i = 1; i <= N; i++)
{
for(int j = i + 1; j <= N; j++)
route[i][j] = route[j][i] = INF;
}
}
int main()
{
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
while(cin >> N >> M && N && M)
{
init();
for(int i = 0; i < M; i++)
{
cin >> a >> b >> c;
route[a][b] = route[b][a] = c;
}
int minn = Dijk();
cout << minn << endl;
}
}
【hdu 2544最短路】【Dijkstra算法模板题】的更多相关文章
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- HDOJ/HDU 2544 最短路---dijkstra算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 这题的思路可以见这里(同一类型):http://blog.csdn.net/xiaozhuaix ...
- hdu 2544 最短路 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...
- HDU 2544最短路dijkstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- hdu-2544-最短路(dijkstra算法模板)
题目链接 题意很清晰,入门级题目,适合各种模板,可用dijkstra, floyd, Bellman-ford, spfa Dijkstra链接 Floyd链接 Bellman-Ford链接 SPFA ...
- 最短路径Dijkstra算法模板题---洛谷P3371 【模板】单源最短路径(弱化版)
题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779. 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入格式 第一行 ...
- 最短路Dijkstra算法模板
// // dijkstra妯℃澘.cpp // algorithm // // Created by david.xu on 2018/8/6. // Copyright 漏 2018骞?david ...
- HDU 2544 最短路(dijkstra+邻接矩阵)
( ̄▽ ̄)" #include<iostream> #include<cstdio> using namespace std; const int INF=10e7; ...
- hdu2544 最短路 Dijkstra算法
最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
随机推荐
- spring的jar包的下载、说明
spring的jar包官方下载地址:完整链接:https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-lo ...
- Docker学习第二天-容器
Docker 容器 容器是 Docker 又一核心概念. 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环 ...
- springcloud-注册中心快速构建
1. 场景描述 springcloud提供了一整套可行的构建分布式系统的方案,使的企业/开发人员能够快速沟通分布式系统,今天快速构建下springcloud的注册中心Eureka. 2. 解决方案 2 ...
- nu.xom:Serializer
Serializer: 机翻 /* 使用用于控制空格,规范化,缩进,换行和基本URI的各种选项以特定编码输出Document对象 */ Serializer(OutputStream out) :创建 ...
- 【基本数据结构之堆】-C++
注意:这篇博客讲的是手写堆,喜欢用C++自带数据结构模拟的慎入 今天我们来聊一聊一种奇怪 的数据结构: 堆 为什么说这个数据结构有点奇怪呢? 先看看其他的在我眼里是正常的数据结构: 队列(近似于排队) ...
- 【CodeForces - 1167C 】News Distribution(并查集)
News Distribution 题意 大概就是分成几个小团体,给每个人用1 - n编号,当对某个人传播消息的时候,整个小团体就知道这个消息,输出 分别对1 - n编号的某个人传递消息时,有多少人知 ...
- Shiro认证时的密码比对
在前面一节<Shiro在Web环境下集成Spring的大致工作流程>的最后一步中提到由Shiro完整密码比对. 那么具体是怎么工作的? 1,既然shiro会把密码来进行比对,当然会调用 U ...
- Vue中动态(import 、require)显示img图片
vue中,经常会遇到显示图片的问题, 如果是一个普通组件的话,那么这样就可以了 <img src="../assets/images/avtor.jpg" width=&qu ...
- 基于zookeeper集群的云平台-配置中心的功能设计
最近准备找工作面试,就研究了下基于zookeeper集群的配置中心. 下面是自己设想的关于开源的基于zookeeper集群的云平台-配置中心的功能设计.大家觉得哪里有问题,请提出宝贵的意见和建议,谢谢 ...
- 制造资源计划(Manufacturing Resource Planning,Mrp II)
制造资源计划(Manufacturing Resource Planning,Mrp II) 概括: 以物料需求计划(MRP)为核心的企业生产管理计划系统,MRP II 是以工业工 ...