朴素版本

#include<bits/stdc++.h>
using namespace std;
const int maxn = 10010;
const int inf = 0x3f3f3f3f;
int a[maxn][maxn],dis[maxn],visit[maxn],n,m,s,t;
void init() {for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)if(i == j)   a[i][j] = 0;else   a[i][j] = inf;
}
void Dij() {for(int i = 1; i <= n; i++)  dis[i] = a[s][i];dis[s] = 0, visit[s] = 1;int minn,su;for(int j = 1; j < n; j++) {minn = inf, su = -1;for(int i = 1; i <= n; i++)if(!visit[i] && dis[i] < minn) {minn = dis[i];su = i;}visit[su] = 1;for(int i = 1; i <= n; i++)if(!visit[i])dis[i] = min(dis[i],dis[su] + a[su][i]);}cout << dis[t] <<endl;
}
int main() {cin >> n >> m >> s >> t;init();for(int i = 1; i <= m; i++) {int x,y;cin >> x >> y;cin >> a[x][y];}Dij();return 0;
}

堆优化加链式向前星

#include<bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 1e5 + 10;
struct edge {int to,value,next;
}a[2 * maxn];
struct node {int x,pos;node(int a,int b) : x(a), pos(b) { }bool operator < (const node &t) const {return t.x < x;}
};
int n, m, visit[maxn], dis[maxn], s, head[maxn],cnt = 1;
void add(int x,int y,int z) {a[cnt].to = y;a[cnt].value = z;a[cnt].next = head[x];head[x] = cnt++;
}
void Dij () {for(int i = 1; i <= n; i++) dis[i] = inf;dis[s] = 0; visit[s] = 1;priority_queue<node>q;q.push(node(0,s));while(!q.empty()) {node temp = q.top();q.pop();int x = temp.x, pos = temp.pos;if(dis[pos] < x) continue;for(int i = head[pos]; i; i = a[i].next) {if(dis[a[i].to] > dis[pos] + a[i].value) {dis[a[i].to] = dis[pos] + a[i].value;q.push(node(dis[a[i].to],a[i].to));}}}for(int i = 1; i <= n; i++)cout << dis[i] << " ";cout <<endl;
}
int main() {int x, y, z;cin >> n >> m >> s;for(int i = 0; i < m; i++) {cin >> x >> y >> z;add(x,y,z);}Dij();return 0;
}

DijKstra算法普通+堆优化链式向前星相关推荐

  1. 迪杰斯特拉--链式向前星

    //算法-迪杰斯特拉 -链式向前星存边实现,加上优先队列 #include <iostream> #include <algorithm> #include <queue ...

  2. Dijkstra算法和堆优化

    目录 Dijkstra介绍 算法思想 具体步骤 代码实现 Dijkstra链式向前星 优化思路 实现步骤 代码实现 Dijkstra链式向前星堆优化 优化思路 优化步骤 代码实现 参考资料(帮助理解代 ...

  3. dijkstra算法及其堆优化

    dijkstra算法及其堆优化 (个人笔记写给自己看的) 数据结构:链式前向星,优先队列 dijkstra算法: vis数组初始化为0,dis数组初始化为inf(很大的值如:0x7fffffff),设 ...

  4. 链式向前星(一个优秀的存储图的数据结构)

    在学习图的存储的时候,我们通常会有邻接矩阵和邻接表两种选择,邻接矩阵好写但效率低,邻接表不好写写但效率高,这里有一种优秀的数据结构,那便是用静态链表头插法实现的链式向前星. 先给出一下邻接矩阵 可以看 ...

  5. Dijkstra算法及堆优化

    1.有向无环图的单源点最短路 其实跟之前说的最长路是一样的 思路:广搜(拓扑排序)+ DP 如下图所示: 2.一般图的单源点最短路 Dijkstra(迪杰斯特拉)算法 算法思路:每次找离起点最近的那个 ...

  6. Dijkstra算法(堆优化版求稀疏图最短路)

    南昌理工acm集训队 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题. 基本思想 Dijkstra算法是用来解决不 ...

  7. PTA: 旅游规划 [狄杰斯特拉+堆优化+链式前向星]

    题目 输入样例: 4 5 0 3 0 1 1 20 1 3 2 30 0 3 4 10 0 2 2 20 2 3 1 20 输出样例: 3 40 思路 狄杰斯特拉几乎算是模版题.练了一下链式前向星. ...

  8. codeforces div3 D Circular Dance (链式向前星)

    题目链接: http://codeforces.com/contest/1095/problem/D 通过题意可知,每次输入的两个数一定相邻,所有只要对每次输入的两个数看作是边,通过向前星构建无向图, ...

  9. PTA: 天梯地图 [狄杰斯特拉+堆优化+链式前向星]

    题目 输入样例1: 10 15 0 1 0 1 1 8 0 0 1 1 4 8 1 1 1 5 4 0 2 3 5 9 1 1 4 0 6 0 1 1 7 3 1 1 2 8 3 1 1 2 2 5 ...

最新文章

  1. Linux yum 命令详解 源配置
  2. scala入门--快学scala第一章练习题
  3. 不是python中用于开发用户界面的第三方库-20个必不可少的Python库也是基本的第三方库...
  4. 公钥密码体制(RSA,椭圆曲线密码,ElGamal
  5. 如何把关联性的告警智能添加到 Nagios 上?(2)
  6. uni-app 用户地理位置授权
  7. mysql pmod项目_内置函数 - 数学函数 - 《Apache Doris 文档(201812)》 - 书栈网 · BookStack...
  8. 网络安全相关行业必备网站
  9. Google测试精华文章(1) - 测试行为,而非实现
  10. java中的 element_Java中队列的element()方法的用法
  11. Java线程状态及其转移
  12. 根据身份证号 计算具体年龄
  13. [Matlab]使用textscan读取.csv文件时候只读取到了第一行
  14. 五、登录页倒计时制作《仿淘票票系统前后端完全制作(除支付外)》
  15. C++ — POD类型以及trivial 和 non-trivial
  16. 30 行代码实现蚂蚁森林自动收能量
  17. 基于Kubernetes 构建.NET Core技术中台
  18. python_并发编程
  19. 计算机网络多项式的定义,多项式
  20. 深航App劫持微信;Apple News上线首日遭遇各种崩溃;华为P30“望远镜手机”正式发布 | 雷锋早报... 1

热门文章

  1. 如何用c语言验证一个定理,验证动量定理方法一
  2. python单例模式继承_Python四种实现单例模式的方法
  3. python使用spark sql查询impala_如何使用JDBC将Impala表直接加载到Spark?
  4. 06-广度优先搜索:图、队列
  5. 资料分享 | 数学建模竞赛备战大全
  6. 二叉排序树与文件操作的设计与实现_堆排序就这么简单
  7. java调用js查询mongo_mongodb操作之使用javaScript实现多表关联查询
  8. css-6 df15,webpack 样式文件的代码分割(15)
  9. java hdms_字段为clob类型,无法插入数据
  10. mysql 碎片率_MySQL数据碎片的整理和分析