最短路 Dijkstra模板
普通dijkstra,复杂度O(n*n)
#include<bits/stdc++.h>
using namespace std;
int n,m,f[105][105],dis[105];
bool b[105]; //n为总共的点数,m为路径数,f数组记录两个点的距离,dis数组记录每个点到原点的距离
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int aa,bb,cc;
scanf("%d%d%d",&aa,&bb,&cc);
f[bb][aa]=f[aa][bb]=cc;
}
memset(dis,1,sizeof(dis));
dis[1]=0;
for(int i=1;i<=n;i++)
if(f[1][i]) dis[i]=f[1][i]; //将刚开始与1点连接的点路径记录
for(int i=1;i<=n;i++){
int k=0;
int mn=2<<29; //一个大数
for(int j=1;j<=n;j++){
if(!b[j] && dis[i]+f[i][j]<mn && f[i][j]){
mn=dis[i]+f[i][j]; //记录最短点和路径
k=j;
}
}
if(k==0) break;
b[k]=1;
dis[k]=mn;
for(int j=1;j<=n;j++)
if(dis[k]+f[k][j]<dis[j] && f[k][j]) //更新其余点
dis[j]=dis[k]+f[k][j];
}
printf("%d",dis[n]);
}
堆优化,复杂度O(mlog(n))。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
const int MAXN = 10005,MAXM = 500005;
struct Edge{
int nxt,to,v;
}edge[MAXM];
int n,m,st,cnt,head[MAXN],dis[MAXN];
bool vis[MAXN];
struct cmp{
bool operator()(int x,int y){
return dis[x]>dis[y];
}
};
inline void add(int bg,int ed,int w){
edge[++cnt].to=ed;
edge[cnt].v=w;
edge[cnt].nxt=head[bg];
head[bg]=cnt;
}
inline void dijkstra(){
priority_queue<int,vector<int>,cmp> q;
memset(dis,0x3f,sizeof(dis));
q.push(st);
dis[st]=0;
while(!q.empty()){
int x=q.top();
q.pop();
if(vis[x]) continue;
vis[x]=1;
for(register int i=head[x];i;i=edge[i].nxt){
int u=edge[i].to;
dis[u]=min(dis[u],dis[x]+edge[i].v);
q.push(u);
}
}
}
int main(){
scanf("%d%d%d",&n,&m,&st);
for(register int i=1;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
}
dijkstra();
for(register int i=1;i<=n;i++)
printf("%d ",dis[i]);
return 0;
}
最短路 Dijkstra模板的更多相关文章
- HDU-2544 最短路 Dijkstra模板题
题目链接:https://vjudge.net/problem/HDU-2544 题意: 题目要求找到节点1到节点n之间的一条最短路 分析: Dijkstra模板题 单源最短路径,可以用dijkstr ...
- 单源最短路——Dijkstra模板
算法思想: 类似最小生成树的贪心算法,从起点 v0 每次新拓展一个距离最小的点,再以这个点为中间点,更新起点到其他点的距离. 算法实现: 需要定义两个一维数组:①vis[ i ] 表示是否从源点到顶点 ...
- HDU 2544最短路dijkstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 图论--最短路-- Dijkstra模板(目前见到的最好用的)
之前的我那个板子,老是卡内存,不知道为什么,我看别人过的那个题都是结构体,我就开始对自己板子做了修改,然后他奶奶的就过了,而且速度也提高了,内存也小了.(自从用了这个板子,隔壁小孩馋哭了)也不知道为啥 ...
- 基础最短路(模板 dijkstra)
Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多 ...
- 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板)
layout: post title: 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板) author: "luowentaoaa" catalo ...
- hdu-2544-最短路(dijkstra算法模板)
题目链接 题意很清晰,入门级题目,适合各种模板,可用dijkstra, floyd, Bellman-ford, spfa Dijkstra链接 Floyd链接 Bellman-Ford链接 SPFA ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- acwing 850. Dijkstra求最短路 II 模板
地址 https://www.acwing.com/problem/content/description/852/ 给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为非负值. 请你求 ...
随机推荐
- python中遍历列表字典元组
遍历列表,打印:我叫name,今年age岁,家住dizhi,电话phone lt = [ {'name':'小王', 'age':18, 'info':[('phone', '123'), ('diz ...
- JSON的android应用实例
JSON的android应用实例 Json在线解析器 下面是直接通过JUnit来测试直接通过API来解析Json数据 1.普通键值对象 2.Json数组对象 3.Json数组对象
- [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause 的问题
问题: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregat ...
- 转载:AWR介绍使用
转载自 http://www.cnblogs.com/lanzi/archive/2011/03/07/1975096.html 自动工作负载库(Automatic Workload Reposito ...
- Spring中ApplicationContext加载机制和配置初始化
Spring中ApplicationContext加载机制. 加载器目前有两种选择:ContextLoaderListener和ContextLoaderServlet. ...
- Html5 学习笔记 【PC固定布局】 实战3 热门旅游展示区
最终效果图: html 代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta char ...
- upc组队赛16 WTMGB【模拟】
WTMGB 题目链接 题目描述 YellowStar is very happy that the FZU Code Carnival is about to begin except that he ...
- tensorflow|tf.train.slice_input_producer|tf.train.Coordinator|tf.train.start_queue_runners
#### ''' tf.train.slice_input_producer :定义样本放入文件名队列的方式[迭代次数,是否乱序],但此时文件名队列还没有真正写入数据 slice_input_prod ...
- 洛谷 P1462 通往奥格瑞玛的道路——二分+spfa
上一波链接 https://www.luogu.org/problem/P1462 这道题我们考虑二分答案 然后每次跑一次spfa判断是否能够到达n点 tips:在不考虑负权边的前提下我们写最短路最好 ...
- qq传文件测试用例设计