#include<iostream>
#include<stdio.h>
#include<math.h>
#include<vector>
using namespace std; struct e{
int next,c;
};
vector<e> edge[];
bool mark[];
int dis[]; int main (){
int n,m;
while (cin>>n>>m && n!= && m!=){
int a,b,c;
e temp;
//初始化
for (int i=;i<=n;i++){
edge[i].clear();
dis[i]=-;
mark[i]=false;
}
dis[]=;
mark[]=true; while(m--){
cin>>a>>b>>c;
temp.c=c;
temp.next=a;
edge[b].push_back(temp);
temp.next=b;
edge[a].push_back(temp);
} int newp=;
for (int i=;i<n;i++){
for (int j=;j<edge[newp].size();j++){
int nex=edge[newp][j].next;
int c = edge[newp][j].c;
if (mark[nex] == true)
continue;
if (dis[nex]==- || dis[nex]>dis[newp]+c)//floyd也有若不可达或者比之小,不知道为啥要有不可达,先记住
dis[nex] = dis[newp]+c;
}
int min=;
for (int j=;j<=n;j++){
if (mark[j] == true)
continue;
if (dis[j] == -)//因为我们的无穷大不是无穷,而是-1,之后的比大小有影响
continue; //所以要加上这个条件
if(dis[j]<min){
min = dis[j];
newp=j;
}
}
mark[newp]=true; }
cout<<dis[n]<<endl;
} return ; }

在写代码上感觉比floyd麻烦很多。但是floyd是n的三次方的复杂度,被求解图的大小不能大于200个节点

dijstra是n的平方的复杂度

标红的邻接链表初始化我总是忘记

核心代码循环n-1次,先更新通过新节点后的dis,再找更新后最近的成为newp

最短路,dijstra算法的更多相关文章

  1. 单源最短路Dijstra算法

    Dijstra算法是寻找从某一顶点i出发到大其他顶点的最短路径.Distra算法的思想与Prim算法很像,它收录顶点的规则是按照路径长度递增的顺序收录的.设v0是源顶点,我们要寻找从v0出发到其他任意 ...

  2. POJ 1062 最短路Dijstra

    汉语题... 题意正如你看到的酱... 看的解题报告.思路大概是把每个点看做最高等级.然后枚举所有当前可以访问的点.进行dijstra算法.找到此时到目标点最短路.枚举完之后找到最小的点就可以了. P ...

  3. POJ 2449 Remmarguts' Date (K短路 A*算法)

    题目链接 Description "Good man never makes girls wait or breaks an appointment!" said the mand ...

  4. dijstra算法,求源点到各个顶点的最短距离

    1:dijstra算法常用语求最短距离, dijstra每次从未发现节点n[]中,发现距离源点最短的节点m,求出最短节点后,将m添加到已发现节点y[]中,用该节点m进行更新其它未发现节点n[]-m的最 ...

  5. 单源最短路dijkstra算法&&优化史

    一下午都在学最短路dijkstra算法,总算是优化到了我能达到的水平的最快水准,然后列举一下我的优化历史,顺便总结总结 最朴素算法: 邻接矩阵存边+贪心||dp思想,几乎纯暴力,luoguTLE+ML ...

  6. Remmarguts' Date(POJ2449+最短路+A*算法)

    题目链接:http://poj.org/problem?id=2449 题目: 题意:求有向图两点间的k短路. 思路:最短路+A*算法 代码实现如下: #include <set> #in ...

  7. Dijstra算法-------为了纪念,等以后看的时候方便

    杭电problem2066 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total ...

  8. 最短路Dijkstra算法的一些扩展问题

    最短路Dijkstra算法的一些扩展问题     很早以前写过关于A*求k短路的文章,那时候还不明白为什么还可以把所有点重复的放入堆中,只知道那样求出来的就是对的.知其然不知其所以然是件容易引发伤痛的 ...

  9. POJ 2449 Remmarguts' Date ( 第 k 短路 && A*算法 )

    题意 : 给出一个有向图.求起点 s 到终点 t 的第 k 短路.不存在则输出 -1 #include<stdio.h> #include<string.h> #include ...

  10. 【ACM程序设计】求短路 Floyd算法

    最短路 floyd算法 floyd是一个基于贪心思维和动态规划思维的计算所有点到所有点的最短距离的算法. P57-图-8.Floyd算法_哔哩哔哩_bilibili 对于每个顶点v,和任一顶点对(i, ...

随机推荐

  1. H5开发:横屏适配

    平常我们做过的需求里,主要是以竖屏式为主,而横屏式较少.对于竖屏式场景来说,大家的经验会比较丰富,因此,此次主要式探讨下横屏式场景下的一些需要注意的点,特别是怎样去做横屏适配. 对于 H5 横屏页面来 ...

  2. SIP协议简单介绍

    sip协议是由IETF提出的IP电话信令协议,主要目的是为了解决ip网络中的信令控制,以及同软交换通信. sip协议类似http协议: 报文结构: start-line message-header ...

  3. 搭建Elasticsearch平台

    https://cloud.tencent.com/developer/article/1189282 https://blog.csdn.net/qq_34021712/article/detail ...

  4. Learning-Python【15】:内置函数

    截止到Python版本3.6.2,一共为我们提供了68个内置函数.它们就是Python提供的直接可以拿来使用的所有函数. 这个表的顺序是按照首字母的排列顺序来的,都混乱的堆在一起.比如,oct和bin ...

  5. spring-cloud-config-server——Environment Repository(File System Backend)

    参考资料: https://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.4.0.RELEASE/single/spring-cl ...

  6. 从github上下载java项目导入到eclipse中

    转载地址:https://blog.csdn.net/chyo098/article/details/79268136

  7. Retrofit2

    导入项目,开启服务端 原文链接 我的Demo AndroidStudio导入会出现无法加载主类 解决办法: 1.选择自己的Jdk路径 2.运行配置,试试来回切换几次,最后选择Default就好了.再直 ...

  8. [LeetCode]题100:Same Tree

    Given two binary trees, write a function to check if they are the same or not. Two binary trees are ...

  9. JavaScript选择点击

    //class选择器[分类添加商品] var a=document.getElementsByClassName("item-collection-detail__products-item ...

  10. 基于c#的windows基础设计(学习日记1)【关于异或运算】

    第一次接触异或运算,总体来说比哈希算法简单的多,无论是理解还是代码的难易度,唯一不好的是在固定了密钥之后,随机性就小了很多,所以安全性比起哈希算法还是有所差距. 原理在网站上很多都有所以就不再赘述了. ...