美文网首页
Dijkstra算法

Dijkstra算法

作者: SummerC0ld | 来源:发表于2017-04-06 15:28 被阅读0次

C实现

#include <stdio.h>
#include <stdlib.h>
#define max 11000000000
int a[1000][1000];
int d[1000]; //d表示某特定边距离
int p[1000]; //p表示永久边距离
int i, j, k;
int m; //m代表边数
int n; //n代表点数
int main()
{
  scanf("%d %d", &n, &m);
  int min1;
  int x, y, z;
  for (i = 1; i <= m; i++)
  {
    scanf("%d%d%d", &x, &y, &z);
    a[x][y] = z;
    a[y][x] = z;
  }
  for (i = 1; i <= n; i++)
    d[i] = max1;
  d[1] = 0;
  for (i = 1; i <= n; i++)
  {
    min1 = max1;
    for (j = 1; j <= n; j++)
      if (!p[j] && d[j] < min1)
      {
        min1 = d[j];
        k = j;
      }
    p[k] = j;
    for (j = 1; j <= n; j++)
      if (a[k][j] != 0 && !p[j] && d[j] > d[k] + a[k][j])
        d[j] = d[k] + a[k][j];
  }
  for (i = 1; i < n; i++)
    printf("%d->", p[i]);
  printf("%d\n", p[n]);
  return0;
}

相关文章

  • 图的最短路径

    Dijkstra算法&Floyd算法 一、Dijkstra算法 Dijkstra算法思想: 只计算v0出发到其他顶...

  • 深入解析Dijkstra's Algorithm ——

    什么是Dijkstra算法? Dijkstra算法是用来寻找最短路径最著名的算法之一。具体来说,Dijkstra算...

  • Dijkstra 算法

    Dijkstra 算法 前言 为了达到任意两结点的最短路径,我们有几种算法可以实现:Dijkstra 算法、Flo...

  • 寻找最短路径

    这方面的经典算法,有Dijkstra算法和Floyd算法。 下面简单说一下基于Dijkstra算法略作小改动的一个...

  • 7.8图的应用:最短路径问题

    最短路径问题:Dijkstra算法 ❖解决带权最短路径问题的经典算法是以发明者命名的“Dijkstra算法”❖这是...

  • 最短路径

    两种最短路径算法:Dijkstra和Bellman 学习资料:《啊哈!算法》 Dijkstra 问题:在一张图中,...

  • 模板

    并查集 拓扑排序 Floyd算法 Dijkstra算法

  • 最短路径解决方法

    Floyd算法;Dijkstra算法;Bellman-Ford算法;动态规划算法

  • 最短路径算法(旅游规划实例java语言)

    Dijkstra算法 简介 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点(不是...

  • 图算法(二)最短路

    本文将介绍三种常见的最短路算法:Dijkstra,Floyd,SPFA Dijkstra Dijkstra是有向图...

网友评论

      本文标题:Dijkstra算法

      本文链接:https://www.haomeiwen.com/subject/mfdqattx.html