[模板]单源最短路径(Dijkstra)
如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。
主要还是再打一遍最短路,这种算法我用的不多。。。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
inline int read()
{ int x=;bool f=;char ch=getchar();
while(!isdigit(ch)){ f=(ch==);ch=getchar();}
while(isdigit(ch)) { x=(x<<)+(x<<)+(ch^);ch=getchar();}
return f?(~x+):x;
}
#define man 500010
int n,m,st;
int head[man<<],num=;
struct edge
{ int next,to,dis;}e[man<<];
inline void add(int from,int to,int dis)
{ e[++num].next=head[from];
e[num].to=to;
e[num].dis=dis;
head[from]=num;
}
int dis[man<<];
bool vis[man<<];
inline void djikstra(int s)
{ int turn=n-;
for(int i=;i<=n;i++) dis[i]=,vis[i]=;
for(int i=head[s];i;i=e[i].next)
dis[e[i].to]=e[i].dis;
dis[s]=;
while(turn--)
{ int mx=;
int t=;
for(int i=;i<=n;i++)
if(!vis[i]&&dis[i]<mx)
mx=dis[i],t=i;
if(t==||mx==) break;
vis[t]=;
for(int i=head[t];i;i=e[i].next)
if(dis[e[i].to]>dis[t]+e[i].dis)
dis[e[i].to]=dis[t]+e[i].dis;
}
}
int main()
{ n=read(),m=read(),st=read();
for(int i=;i<=m;i++)
{ int x=read(),y=read(),z=read();
add(x,y,z);
}
djikstra(st);
for(int i=;i<=n;i++)
printf("%d ",dis[i]);
putchar('\n');
return ;
}
[模板]单源最短路径(Dijkstra)的更多相关文章
- 单源最短路径Dijkstra算法,多源最短路径Floyd算法
1.单源最短路径 (1)无权图的单源最短路径 /*无权单源最短路径*/ void UnWeighted(LGraph Graph, Vertex S) { std::queue<Vertex&g ...
- [数据结构与算法-15]单源最短路径(Dijkstra+SPFA)
单源最短路径 问题描述 分别求出从起点到其他所有点的最短路径,这次主要介绍两种算法,Dijkstra和SPFA.若无负权优先Dijkstra算法,存在负权选择SPFA算法. Dijkstra算法 非负 ...
- 单源最短路径——dijkstra算法
dijkstra算法与prim算法的区别 1.先说说prim算法的思想: 众所周知,prim算法是一个最小生成树算法,它运用的是贪心原理(在这里不再证明),设置两个点集合,一个集合为要求的生成树的 ...
- 单源最短路径 dijkstra算法实现
本文记录一下dijkstra算法的实现,图用邻接矩阵表示,假设图为无向图.而且连通,有向图,不连通图的做法相似. 算法简述: 首先确定"单源"的源.假设是第0个顶点. 维护三个数组 ...
- matlab练习程序(单源最短路径Dijkstra)
图的相关算法也算是自己的一个软肋了,当年没选修图论也是一大遗憾. 图像处理中,也有使用图论算法作为基础的相关算法,比如图割,这个算法就需要求最大流.最小割.所以熟悉一下图论算法对于图像处理还是很有帮助 ...
- luogu3371 【模板】单源最短路径 dijkstra堆优化
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> ...
- 单源最短路径——Dijkstra算法学习
每次都以为自己理解了Dijkstra这个算法,但是过没多久又忘记了,这应该是第4.5次重温这个算法了. 这次是看的胡鹏的<地理信息系统>,看完之后突然意识到用数学公式表示算法流程是如此的好 ...
- 单源最短路径-Dijkstra算法
1.算法标签 贪心 2.算法描述 具体的算法描述网上有好多,我觉得莫过于直接wiki,只说明一些我之前比较迷惑的. 对于Dijkstra算法,最重要的是维护以下几个数据结构: 顶点集合S : 表示已经 ...
- 单源最短路径Dijkstra和优先级算法
百度百科:迪杰斯特拉算法. 代码实现如下: import java.util.Comparator; import java.util.PriorityQueue; import java.util. ...
随机推荐
- Android 语音处理
开源的sip android 项目 https://code.google.com/p/csipsimple/
- jmeter数据关联_后置处理器_正则表达式提取器
- Tomcat配置远程调试
===========方法1================================ tomcat7 :catalina.bat jpda start,调试端口默认为8000 ======== ...
- PTA 1004 Counting Leaves (30)(30 分)(dfs或者bfs)
1004 Counting Leaves (30)(30 分) A family hierarchy is usually presented by a pedigree tree. Your job ...
- 20181110_wait和async
一. Awit和async的由来: await/async本身是一个语法糖,编译器提供的一个简化编程的功能; 在C#升级和.net Framework升级的时候, 产生的, 所以说并不是CLR的产物 ...
- C# 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke [问题点数:40分
注意: this.DateTimeRun = true; new Thread(jishi_kernel).Start(); 线程的启动,不能放在 public Form ...
- TThread 线程的例子
TThread 线程的例子 D:\Documents\Embarcadero\Studio\14.0\Samples\CPP\RTL\Threads TThread类 该线程类可以完成大多数的线程 ...
- matching书页匹配例子
detect_brochure_pages.hdev *这个例子主要描述了从图片库中寻找有相应页面的那一页 *第一步中,不同的纸张页面用来做训练,最后创建好model *第二步,在未知的页面图片中 ...
- An Intuitive Explanation of Fourier Theory
Reprinted from: http://cns-alumni.bu.edu/~slehar/fourier/fourier.html An Intuitive Explanation of Fo ...
- Maven使用Nexus私服的配置
工作记录 —————————————————————————————— 配置文件 apache-maven-3.3.3\conf\settings.xml 在mirrors(镜像)之间配置. url为 ...