最短路径:初涉Dijkstra算法

时间:2021-08-12 17:55:02

模板题目:https://www.luogu.com.cn/problem/P1339

我的代码:

 #include<cstdio>
#include<cstring>
#include<iostream>
#define INF 0x3f3f3f3f;
using namespace std;
int n,m,s,t;
int w[][];//初始化为INF
int d[];
int vis[]; int main()
{
freopen("input.txt","r",stdin);
cin>>n>>m>>s>>t;
memset(vis,,sizeof(vis));
for(int i=;i<n;i++) d[i]=(i==s-)?:INF;//0赋值给起点
for(int i=;i<n;i++) for(int k=;k<n;k++) w[i][k]=INF;
//
int a,b,p;
for(int i=;i<m;i++)
{
cin>>a>>b>>p;
a--;b--;//由于输入文件里是[1,n],而模板中是[0,n)所以找了好久才发现
if(w[a][b]>p){w[b][a]=w[a][b]=p;}
}
//
for(int i=;i<n;i++)
{
int x,m=INF;
for(int y=;y<n;y++)if(!vis[y]&&d[y]<=m)m=d[x=y];
vis[x]=;
for(int y=;y<n;y++)d[y]=min(d[y],d[x]+w[x][y]);
}
printf("%d\n",d[t-]);
return ;
}

其他博主的文章:

https://blog.csdn.net/m0_38004914/article/details/81209125

https://blog.csdn.net/kprogram/article/details/81225176

OK

最短路径:初涉Dijkstra算法的更多相关文章

  1. 单源最短路径(dijkstra算法)php实现

    做一个医学项目,当中在病例评分时会用到单源最短路径的算法.单源最短路径的dijkstra算法的思路例如以下: 如果存在一条从i到j的最短路径(Vi.....Vk,Vj),Vk是Vj前面的一顶点.那么( ...

  2. 【算法设计与分析基础】25、单起点最短路径的dijkstra算法

    首先看看这换个数据图 邻接矩阵 dijkstra算法的寻找最短路径的核心就是对于这个节点的数据结构的设计 1.节点中保存有已经加入最短路径的集合中到当前节点的最短路径的节点 2.从起点经过或者不经过 ...

  3. 数据结构与算法--最短路径之Dijkstra算法

    数据结构与算法--最短路径之Dijkstra算法 加权图中,我们很可能关心这样一个问题:从一个顶点到另一个顶点成本最小的路径.比如从成都到北京,途中还有好多城市,如何规划路线,能使总路程最小:或者我们 ...

  4. 最短路径 &vert; 深入浅出Dijkstra算法(一)

    参考网址: https://www.jianshu.com/p/8b3cdca55dc0 写在前面: 上次我们介绍了神奇的只有五行的 Floyd-Warshall 最短路算法,它可以方便的求得任意两点 ...

  5. 经典树与图论(最小生成树、哈夫曼树、最短路径问题---Dijkstra算法)

    参考网址: https://www.jianshu.com/p/cb5af6b5096d 算法导论--最小生成树 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树. im ...

  6. ACM&colon; HDU 3790 最短路径问题-Dijkstra算法

    HDU 3790 最短路径问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Des ...

  7. python数据结构与算法——图的最短路径(Dijkstra算法)

    # Dijkstra算法——通过边实现松弛 # 指定一个点到其他各顶点的路径——单源最短路径 # 初始化图参数 G = {1:{1:0, 2:1, 3:12}, 2:{2:0, 3:9, 4:3}, ...

  8. 最短路径问题——dijkstra算法

    仅谈谈个人对dijkstra的理解,dijkstra算法是基于邻接表实现的,用于处理单源最短路径问题(顺便再提一下,处理单源最短路径问题的还有bellman算法).开辟一个结构体,其变量为边的终点和边 ...

  9. 最短路径之Dijkstra算法及实例分析

    Dijkstra算法迪科斯彻算法 Dijkstra算法描述为:假设用带权邻接矩阵来表示带权有向图.首先引进一个辅助向量D,它的每个分量D[i]表示当前所找到的从始点v到每个终点Vi的最短路径.它的初始 ...

  10. HDU1548——A strange lift&lpar;最短路径:dijkstra算法&rpar;

    A strange lift DescriptionThere is a strange lift.The lift can stop can at every floor as you want, ...

随机推荐

  1. iOS 报错 &colon;Duplicate interface definition for class’&ast;&&num;39&semi;

    这个是重复导入引起的,但是一般的重复导入会在C里的include.而在项目中我们移动项目的位置,比如从某一文件夹移到另一文件夹,路径改变的话会导致项目的中预编译文件PrefixHeader.pch的路 ...

  2. POJ2472106 miles to Chicago

    106 miles to Chicago Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3931   Accepted: 1 ...

  3. Android&colon;Touch和Click的区别

    http://blog.csdn.net/hufeng882412/article/details/7310142 针对屏幕上的一个View控件,Android如何区分应当触发onTouchEvent ...

  4. IT公司100题-4-在二元树中找出和为某一值的所有路径

    问题描述: 输入一个整数和一棵二元树.从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径.打印出和与输入整数相等的所有路径. 例如输入整数30和如下二元树   14 / \ 5 16 / ...

  5. Help View修复

    好吧,手贱把ProgramData里关于Help View的某些数据删除了 (在任何情况下都不要删除此文件夹中的任何数据).即使卸载后重新安装也出现错误,可以参考的http://social.msdn ...

  6. push&lpar;&rpar; &amp&semi; concat&lpar;&rpar;

    eg. var arr = []; arr.push(1); arr.push([2, 3]); arr.push(4, 5); arr = arr.concat(6); arr = arr.conc ...

  7. 点击上下页,实现图片滚动的jquery代码

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...

  8. openlayers4 入门开发系列之地图标绘篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  9. Python3创建项目时创建了一个叫做&OpenCurlyDoubleQuote;keyword&quot&semi;的包,运行项目时报ImportError&colon; cannot import name &&num;39&semi;iskeyword&&num;39&semi;错误

    导致该问题的原因为在Python3中keyword是python的关键字包,所以在给包命名时应避免使用关键字进行命名.解决方法,将keword包名称修改为'keywords'就可以了.

  10. Release file is expired&comma; Updates for this repository will not be applied&period;&lpar;资源索引文件过期问题&rpar;

    将Debian下载源同步到本地之后,通过本地资源地址进行apt update操作时提示过期问题: E: Release file for http://localhost/security/dists ...