C++实现多源最短路径之Floyd算法示例
发布时间:2020-12-31 19:06:10 所属栏目:经验 来源:网络整理
导读:本篇章节讲解C++实现多源最短路径之Floyd算法。供大家参考研究具体如下: #includecstdio#includecstring#includeiostream#define MAX 999using namespace std;int n,m;int e[MAX][MAX];void Init(){ for(int i=1; i=n; ++i) for(int j=1; j=n; ++
|
本篇章节讲解C++实现多源最短路径之Floyd算法。分享给大家供大家参考,具体如下:
#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算法是求多点最短路径的一种算法,其核心代码为
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++程序设计有所帮助。 (编辑:阿坝站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Linux中出现“No space left on device”错误的排查与解决方
- 三星Galaxy M31 Prime拥有三个月的Amazon Prime会员资格,以
- 为什么摩尔定律一直没死 但人们还会继续预测它要死
- window.open 定义窗口打开方式的代码
- 迎接5G!浪潮边缘数据中心亮相中国电机工程学会年会
- 角力生态伙伴 腾讯云SaaS技术联盟对抗阿里数字中台
- 以数字孪生为底座,DataMesh如何打造工业领域的Office 365?
- 2020年国内HR SaaS首笔融资!易路软件完成数亿元人民币C2轮
- Zenlayer助力即构科技提升用户实时互动体验,为新兴市场打c
- 浪潮庞松涛:工业互联网正在成为新型基础设施建设
站长推荐
热点阅读

