【模板 && 拓扑】 Dijkstra 单源最短路径算法
话不多说上代码
链式前向星233
#include<bits/stdc++.h>
using namespace std;
const int maxn=,_max=0x3fffffff;
//链式前向星
struct bian{
int from,to,dist;
bian(int u,int v,int d) : from(u),to(v),dist(d){}
};//定义一个 边 类型
struct heapn{
int u,d;
heapn(int u,int d): u(u),d(d) {}
bool operator <(const heapn & r) const {
return d>r.d;
}
};//定义一个堆
struct Di{ //重点:
int n,m;
vector<int> g[maxn];
vector<bian> bi;
int dis[maxn],pre[maxn],v[maxn];
void jiaru(int u ,int v ,int d) {
bi.push_back(bian(u,v,d));
g[u].push_back(bi.size()-);
}
void ini(int v_size){
n=v_size;
bi.clear();
for(int i=;i<n;i++) g[i].clear();
memset(pre , ,sizeof(pre));
}
void di(int s){
for(int i=;i<n;i++) dis[i]=_max;
dis[s]=;
memset(v,,sizeof(v));
priority_queue<heapn> q;
q.push(heapn(s,));
while(!q.empty()){
heapn t=q.top();
q.pop();
int x=t.u;
if(v[x]) continue;
v[x]=;
for(int j=;j<n;j++){
bian & e =bi[g[x][j]];
if(dis[x]+e.dist<dis[e.to]){
dis[e.to]=dis[x]+e.dist;
pre[e.to]=x;
q.push(heapn(e.to,dis[e.to]));
}
}
}
}
};
int main(){
Di a;
int u,v,d;
a.ini();
while(){
cin>>u>>v>>d;
a.jiaru(u,v,d);
}
a.di();
cout<<a.dis[]<<endl;
return ;
}
【模板 && 拓扑】 Dijkstra 单源最短路径算法的更多相关文章
- Dijkstra 单源最短路径算法
Dijkstra 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法,由计算机科学家 Edsger Dijkstra 于 1956 年 ...
- Bellman-Ford 单源最短路径算法
Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法.该算法由 Richard Bellman 和 Leste ...
- Dijkstra——单源最短路径
算法思想 ①从一个源点开始,找距离它最近的点顶点v ②然后以顶点v为起点,去找v能到达的顶点w,即v的邻居 比较源点直接到 v的距离和(源点到v的距离+v到w的距离) 若大于后者则更新源点的到w的开销 ...
- 单源最短路径算法:迪杰斯特拉 (Dijkstra) 算法(二)
一.基于邻接表的Dijkstra算法 如前一篇文章所述,在 Dijkstra 的算法中,维护了两组,一组包含已经包含在最短路径树中的顶点列表,另一组包含尚未包含的顶点.使用邻接表表示,可以使用 BFS ...
- 单源最短路径算法:迪杰斯特拉 (Dijkstra) 算法(一)
一.算法介绍 迪杰斯特拉算法(英语:Dijkstra's algorithm)由荷兰计算机科学家艾兹赫尔·迪杰斯特拉在1956年提出.迪杰斯特拉算法使用了广度优先搜索解决赋权有向图的单源最短路径问题. ...
- 经典贪心算法(哈夫曼算法,Dijstra单源最短路径算法,最小费用最大流)
哈夫曼编码与哈夫曼算法 哈弗曼编码的目的是,如何用更短的bit来编码数据. 通过变长编码压缩编码长度.我们知道普通的编码都是定长的,比如常用的ASCII编码,每个字符都是8个bit.但在很多情况下,数 ...
- 单源最短路径算法---Dijkstra
Dijkstra算法树解决有向图G=(V,E)上带权的单源最短路径问题,但是要求所有边的权值非负. 解题思路: V表示有向图的所有顶点集合,S表示那么一些顶点结合,从源点s到该集合中的顶点的最终最短路 ...
- Dijkstra算法详细(单源最短路径算法)
介绍 对于dijkstra算法,很多人可能感觉熟悉而又陌生,可能大部分人比较了解bfs和dfs,而对dijkstra和floyd算法可能知道大概是图论中的某个算法,但是可能不清楚其中的作用和原理,又或 ...
- Dijkstra单源最短路径,POJ(2387)
题目链接:http://poj.org/problem?id=2387 Dijkstra算法: //求某一点(源点)到另一点的最短路,算法其实也和源点到所有点的时间复杂度一样,O(n^2); 图G(V ...
随机推荐
- python web开发——c5 图片上传 flask-uploads 云储存sdk
坑1:上传图片时,py文件中@app.route('/upload/',methods = {'post','get'})中upload后如有斜杠,则postman中发送post时的网址中也要为upl ...
- python 爬图 helloworld
最近发现 吾志 上用户的头像都很个性,另外,对于没有把日记设为私密的用户,最后一天的日记是公开的,谁都可以查看. 所以,如果每天把所有可查看的日记爬一遍,那么-- 哈哈 以前对爬虫只是了解一点点,没有 ...
- Python(多线程threading模块)
day27 参考:http://www.cnblogs.com/yuanchenqi/articles/5733873.html CPU像一本书,你不阅读的时候,你室友马上阅读,你准备阅读的时候,你室 ...
- 算法逆向6——RSA识别
本文原创作者:i春秋作家——icq5f7a075d 1. 算法介绍 RSA算法是一种用数论构造的.基于大合数因子分解困难性的公开密钥密码.由于RSA密码既可用于加密,又可用于数字签名,安全.易懂,因此 ...
- 在Load average 高的情况下如何鉴别系统瓶颈
在Load average 高的情况下如何鉴别系统瓶颈.是CPU不足,还是io不够快造成? 或是内存不足? 一:查看系统负载vmstat procs -----------memory-------- ...
- maven项目发布到tomcat后没有lib目录解决方案
maven项目放入tomcat中时,总是报错,而且这些jar都是真实存在的,错误如下: maven eclipse tomcat java.lang.ClassNotFoundException: o ...
- class字节码结构(三)(字段集合的结构)
<Java虚拟机原理图解>1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的 字段区:包括了字段计数器和字段数据区: 字段是指在类中定义的静态或者非静态的 ...
- 移动端 实现ul横向滚动条
ul { display: flex; width: 100%; height: 3.333333rem; background: #fff; padding: 0.373333rem 0.32rem ...
- Java Web入门学习(三)Maven的配置与使用国内仓库
一.Maven下载与配置 下载好的压缩包,压缩到D盘,或者其他盘符. 新建系统环境变量 MAVEN_HOME 值是压缩好的Maven目录. 比如: D:\apache-maven- 在path环境变 ...
- Python的不定长参数研究
通过观察程序和运行结果我们发现,传参时将1传给了a,将2传给了b,将3,4,5传给了*args,将m=6,n=7,p=8传给了**kwargs.为什么是这样传参呢?*args和**kwargs又是什 ...