迪杰斯特拉邻接矩阵存储方式

原创 2015年07月08日 21:06:14
#include <stdio.h>
int main()
 {
    int a[101][101];
    int i,j,c,d,e,n,m,min,u,k;
    int book[101];
    int dis[101];//1到其余点的的距离
    scanf("%d%d",&n,&m);
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
        if (i==j)
             a[i][j]=0;
             else a[i][j]=10000;
             for (i=1;i<=m;i++)
             {
                 scanf("%d%d%d",&c,&d,&e);
                 a[c][d]=e;
             }
             book[1]=1;
             for (i=2;i<=n;i++)
                book[i]=0;
                for (i=1;i<=n;i++)
                    dis[i]=a[1][i];//初始化dis[i]为1直接到i的距离
             for (i=1;i<=n-1;i++)//1到剩下n-1个点的距离
             {
                  min=10000;
                 for (j=1;j<=n;j++)
                 {
                     if ((min>dis[j])&&(book[j]==0))
                     {
                        min=dis[j];//找到在未确定的点中离1最近的点,并记录下来
                        u=j;
                     }

                 }
                 book[u]=1;
                 for (k=1;k<=n;k++)
                    if ((a[u][k]!=10000)&&(dis[u]+a[u][k]<dis[k]))//若u能到k且k值不确定且比原来直接到小(只要判断u->i是否为无穷大,因为1->u已经在之前判断过)
                    dis[k]=dis[u]+a[u][k];
             }
             for (i=1;i<=n;i++)
                printf("%d ",dis[i]);
             return 0;
 }







版权声明:本文为博主原创文章,未经博主允许不得转载。

最短路 迪杰斯特拉算法(邻接矩阵)

理解了好几天的最短路,今天有点眉目了 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以...
  • u013014691
  • u013014691
  • 2014年02月24日 21:27
  • 1285

傻子也能看懂的迪杰斯特拉算法(转)

本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”。例如求下图中的1号顶点到2、3、4、5、6号顶点的最短路径。             与Floyd-Warshal...
  • qq_34374664
  • qq_34374664
  • 2016年08月20日 15:19
  • 1293

【数据结构】迪杰斯特拉算法

数据结构中的迪杰斯特拉算法 /* 名称:迪杰斯特拉算法 语言:数据结构C语言版 编译环境:VC++ 6.0 日期:2014-3-25 */ #include #include ...
  • u010870518
  • u010870518
  • 2014年03月25日 19:24
  • 1576

用c++实现基于vector的迪杰斯特拉算法

本程序的实现是在linux redhat,vmware下实现的,使用的是g++编译器,如何读者使用其他的编译器,可能需要小改一下代码~~ #include #include #include #inc...
  • MyLinChi
  • MyLinChi
  • 2016年11月03日 13:25
  • 600

迪杰斯特拉算法Java实现

public class Dijkstra { static int MAX=10000; public static void main(String[] args) { ...
  • wangshuang1631
  • wangshuang1631
  • 2016年09月23日 13:45
  • 2720

HDU 1874 (迪杰斯特拉 + 邻接表 + 优先队列 模板)

畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su...
  • L_BestCoder
  • L_BestCoder
  • 2016年07月28日 09:56
  • 500

如何理解迪杰斯特拉算法

如何理解迪杰斯特拉算法 路漫漫其修远兮,吾将上下而求索。                ——屈原 在最短路径的求解算法中,迪杰斯特拉(Dijkstra)算法应该是非常出名的,但是对于初学者而言却...
  • liulizhi1996
  • liulizhi1996
  • 2016年03月04日 20:57
  • 2194

迪杰斯特拉算法与弗洛伊德算法

// mydjstl.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include using namespace std; #pragma com...
  • silenceyea
  • silenceyea
  • 2016年08月30日 15:29
  • 1300

堆优化的dijkstra(迪杰斯特拉)

前面在讲prim算法的时候已经提到了dijkstra,这里再说说求最短路的dijkstra算法; 相比于邻接矩阵的存图方式我们可以用更适用于做题的链式前向星,更省空间; 我们也可以用STL的pri...
  • ergedathouder
  • ergedathouder
  • 2016年09月05日 13:25
  • 2556

透彻理解迪杰斯特拉算法

Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,这个算法我主动学了三遍,第一主动学的时候,是看严蔚敏的《数据结构》,当时应该是学懂了,有点透彻地理解了这个算法,但是没有记录下来,后来就忘记...
  • mu399
  • mu399
  • 2016年03月16日 12:04
  • 41713
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:迪杰斯特拉邻接矩阵存储方式
举报原因:
原因补充:

(最多只允许输入30个字)