2.Dijkstra算法O (N2)
用来计算从一个点到其他所有点的最短路径的算法,是一种单源最短路径算法。也就是说,只能计算起点只有一个的情况
Dijkstra的时间复杂度是O (N2),它不能处理存在负边权的情况
算法描述:
       设起点为sdis[v]表示从sv的最短路径,pre[v]v的前驱节点,用来输出路径。
       a)初始化:dis[v]=(vs); dis[s]=0; pre[s]=0;
       b)For (i = 1; i <= n ; i++)
            1.在没有被访问过的点中找一个顶点u使得dis[u]是最小的。
            2.u标记为已确定最短路径
            3.For u相连的每个未确定最短路径的顶点v
              if  (dis[u]+w[u][v]<dis[v])
               {
                  dis[v]=dis[u]+w[u][v];
                  pre[v]=u;
               }
        c)算法结束:dis[v]sv的最短距离;pre[v]v的前驱节点,用来输出路径。
 #include<cstdio>
#include<cstring>
#define N 1010
#define MAXX 9999999
int dis[N];
int map[N][N];
int qq[N];
int que[N];
int n,m,bein,s,ss;
int visit[N];
void work(int s)
{
visit[s]=;
for(int k=;k<=n;++k)
{
dis[k]=map[s][k];
if(map[s][k]!=MAXX)qq[k]=s;
else qq[k]=;
}
visit[s]=;
dis[s]=;
for(int I=;I<n;++I)
{
int k=s,minn=MAXX;
for(int j=;j<=n;++j)
{
if(!visit[j]&&dis[j]<minn)
{
minn=dis[j];
k=j;
}
}
visit[k]=;
for(int i=;i<=n;++i)
{
if(map[k][i]&&!visit[i]&&dis[i]>dis[k]+map[k][i])
{
dis[i]=dis[k]+map[k][i];
qq[i]=k;
}
}
}
printf("%d\n",dis[ss]);
}
void print (int u,int v )
{
int tot=;
que[tot]=v;
tot++;
int temp=qq[v];
while(temp!=u)
{ que[tot]=temp;
tot++;
temp=qq[temp];
}
que[tot]=u;
for(int i=tot;i>=;i--)
if(i!=)
printf("%d->",que[i]);
else
printf("%d",que[i]); }
int main()
{
scanf("%d%d",&n,&m);
memset(dis,MAXX,sizeof(dis));
memset(map,MAXX,sizeof(map));
for(int i=;i<=m;++i)
{
int x,y,q;
scanf("%d%d%d",&x,&y,&q);
map[x][y]=q;
map[y][x]=q;
}
scanf("%d%d",&s,&ss);
work(s);
print(s,ss);
return ;
}

图论-最短路径 2.Dijkstra算法O (N2)的更多相关文章

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

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

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

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

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

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

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

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

  5. 最短路径 | 深入浅出Dijkstra算法(一)

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

  6. 图论基础之Dijkstra算法的初探

         图论,顾名思义就是有图有论.        图:由点"Vertex"和边"Edge "组成,且图分为有向图和无向图(本文讨论有向图),之前做毕业设计的 ...

  7. 25最短路径之Dijkstra算法

    图的最优化问题:最小生成树.最短路径 典型的图应用问题 无向连通加权图的最小生成树 有向/无向加权图的最短路径 四个经典算法 Kruskal算法.Prim算法---------------最小生成树 ...

  8. ACM: HDU 3790 最短路径问题-Dijkstra算法

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

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

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

随机推荐

  1. 2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践 目录 实验准备 后门概念 常用后门工具 实验内容与步骤 使用netcat获取主机操作Shell,cron启动 使用so ...

  2. 2048总结 JavaScript+jQuery(取元素方便,.css,text方法)

    Html部分(界面):1.开始新游戏:2.返回上一步:3.记分栏: 4.16个小格组成: 其中1,2由链接形式实现. a标签中href属性调用js方法: <a href="javasc ...

  3. jquery Mobile入门—多页面切换示例学习

    1.在JQuery Mobile中,多个页面的切换是通过<a>元素.并将<href>属性设置为#+对应的id号的方式进行的. 2.多页面切换示例代码: 复制代码代码如下: &l ...

  4. Java性能监控

    Java性能监控 上次介绍了如何使用jvisualvm监控java,今天做进一步讲解!Java性能监控主要关注CPU.内存和线程. 在线程页中,点击线程Dump,可以生成threaddump日志,通过 ...

  5. HDU 1711 Number Sequence (KMP简单题)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. Java语言实现通过Ajax抓取后台数据及图片

    1.Java语言实现通过Ajax抓取后台数据及图片信息 1.1数据库设计: create table picture( pic_id number not null, pic_name )not nu ...

  7. Unity Loding白屏

    卡loading很多时候是由于网络原因造成的,你可以尝试断网,进入离线模式.如果使用VPN也可以先关闭使用,部分Vpn的配置也会导致该问题出现.最后可以查看一下防火墙的设置.

  8. linux下安装swoole扩展

    一.下载swoole 地址:https://github.com/swoole/swoole-src二.将下载好的压缩包放在linux服务器下三.解压压缩包到任意目录 # unzip swoole-s ...

  9. POJ3074 Sudoku(lowbit优化搜索)

    In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. For exa ...

  10. 建立复数类Complex,并且进行赋值,求和,取模等操作

    #include "pch.h" #include <iostream> #include<cmath> using namespace std; clas ...