gpt4 book ai didi

C++实现多源最短路径之Floyd算法示例

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C++实现多源最短路径之Floyd算法示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了C++实现多源最短路径之Floyd算法。分享给大家供大家参考,具体如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<cstdio>
#include<cstring>
#include<iostream>
#define MAX 999
using namespace std;
int n,m;
int e[MAX][MAX];
void Init()
{
   for ( int i=1; i<=n; ++i)
     for ( int j=1; j<=n; ++j)
     {
       if (i==j)
         e[i][j]=0;
       else
         e[i][j]=MAX;
     }
}
void Input()
{
   int a,b,c;
   for ( int i=1; i<=m; ++i)
   {
     cin>>a>>b>>c;
     e[a][b]=c;
   }
}
void Floyd()
{
   for ( int k=1; k<=n; k++)
     for ( int i=1; i<=n; i++)
       for ( int j=1; j<=n; j++)
         if (e[i][j]>e[i][k]+e[k][j])
           e[i][j]=e[i][k]+e[k][j];
}
void Output()
{
   for ( int i=1; i<=n; ++i)
     for ( int j=1; j<=n; ++j)
       cout<< "dis[" <<i<< "][" <<j<< "] = " <<e[i][j]<<endl;
}
int main()
{
   while (1)
   {
     cout<< "n" <<endl; //顶点个数
     cin>>n;
     if (!n) break ;
     cout<< "m" <<endl; //边的个数
     cin>>m;
     Init();
     Input();
     Floyd();
     Output();
   }
}

Floyd算法是求多点最短路径的一种算法,其核心代码为 。

?
1
2
3
4
5
6
7
8
void Floyd()
{
   for ( int k=1; k<=n; k++)
     for ( int i=1; i<=n; i++)
       for ( int j=1; j<=n; j++)
         if (e[i][j]>e[i][k]+e[k][j])
           e[i][j]=e[i][k]+e[k][j];
}

希望本文所述对大家C++程序设计有所帮助.

最后此篇关于C++实现多源最短路径之Floyd算法示例的文章就讲到这里了,如果你想了解更多关于C++实现多源最短路径之Floyd算法示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com