迪杰斯特拉模板

原创 2016年08月30日 19:48:20
迪杰斯特拉算法求无向图最短路
#include<cstring>
#include<cstdio>
#include<algorithm>
#define inf 99999999
#define N 1010
using namespace std;
int map[N][N];//原储存矩阵
int dist[N];
int visited[N],s[N];
int n,m;


void Dijkstra(int J)//求每个点到J的距离
{
    int j,i;
    memset(visited,0,sizeof(visited));
    for(i=0;i<=n;i++)//初始化距离
    dist[i]=inf;
    dist[J]=0;
    visited[J]=1;
    for(i=1; i<n; i++)
    {
        for(j=1; j<=n; j++)
        {
            if(!visited[j]&&map[J][j]<inf&&dist[J]+map[J][j]<dist[j])//有路,并且没走过,并且落脚后比原有路径更短
            {
                dist[j]=map[J][j]+dist[J];
            }
        }
        int min=inf;
        for(j=1; j<=n; j++)//再遍历所有点,找已经可以走的,并且没有做过起点的。
        {
            if(!visited[j]&&dist[j]<min)
            {
                J=j;
                min=dist[j];//每次从最短的路走,搜出下一个落脚点
            }
        }
        visited[J]=1;//做过头点的标记
        if(min==inf)
            return;
    }
}


int main()
{
    int i,j,k;
    while(~scanf("%d%d",&n,&m))
    {
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
            {
                if(i==j)
                    map[i][j]=0;
                else
                    map[i][j]=inf;
            }
        }
        int f;
        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&j,&k,&f);
            if(f<map[j][k])
            map[j][k]=f;
        }
        Dijkstra(1);
        memset(s,0,sizeof(s));
    }
    return 0;
}


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

迪杰斯特拉算法 最短路径模板题 hdu 2544

最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...
  • Ice_Alone
  • Ice_Alone
  • 2015年03月28日 09:37
  • 2342

迪杰斯特拉/dijkstra 算法模板(详细注释)

迪杰斯特拉算法的模板(带详细注释)
  • xdz78
  • xdz78
  • 2015年08月17日 08:03
  • 1840

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
  • 497

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

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

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

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

迪杰斯特拉算法Java实现

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

如何理解迪杰斯特拉算法

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

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

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

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

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

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

本程序的实现是在linux redhat,vmware下实现的,使用的是g++编译器,如何读者使用其他的编译器,可能需要小改一下代码~~ #include #include #include #inc...
  • MyLinChi
  • MyLinChi
  • 2016年11月03日 13:25
  • 600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:迪杰斯特拉模板
举报原因:
原因补充:

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