C++实现多源最短路径之Floyd算法示例
本文实例讲述了C++实现多源最短路径之Floyd算法。分享给大家供大家参考,具体如下:
#include#include #include #defineMAX999 usingnamespacestd; intn,m; inte[MAX][MAX]; voidInit() { for(inti=1;i<=n;++i) for(intj=1;j<=n;++j) { if(i==j) e[i][j]=0; else e[i][j]=MAX; } } voidInput() { inta,b,c; for(inti=1;i<=m;++i) { cin>>a>>b>>c; e[a][b]=c; } } voidFloyd() { for(intk=1;k<=n;k++) for(inti=1;i<=n;i++) for(intj=1;j<=n;j++) if(e[i][j]>e[i][k]+e[k][j]) e[i][j]=e[i][k]+e[k][j]; } voidOutput() { for(inti=1;i<=n;++i) for(intj=1;j<=n;++j) cout<<"dis["<>n; if(!n)break; cout<<"m"< >m; Init(); Input(); Floyd(); Output(); } }
Floyd算法是求多点最短路径的一种算法,其核心代码为
voidFloyd() { for(intk=1;k<=n;k++) for(inti=1;i<=n;i++) for(intj=1;j<=n;j++) if(e[i][j]>e[i][k]+e[k][j]) e[i][j]=e[i][k]+e[k][j]; }
希望本文所述对大家C++程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。