C++實(shí)現(xiàn)多源最短路徑之Floyd算法示例
本文實(shí)例講述了C++實(shí)現(xiàn)多源最短路徑之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;//頂點(diǎn)個(gè)數(shù) cin>>n; if(!n) break; cout<<"m"<<endl;//邊的個(gè)數(shù) cin>>m; Init(); Input(); Floyd(); Output(); } }
Floyd算法是求多點(diǎn)最短路徑的一種算法,其核心代碼為
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]; }
希望本文所述對(duì)大家C++程序設(shè)計(jì)有所幫助。
相關(guān)文章
windows上配置vscode?C/C++代碼跳轉(zhuǎn)的實(shí)現(xiàn)
C/C++官方的C/C++插件,必備的插件,是代碼跳轉(zhuǎn)、自動(dòng)補(bǔ)全、代碼大綱顯示等功能的基礎(chǔ),本文主要介紹了windows上配置vscode?C/C++代碼跳轉(zhuǎn),感興趣的可以了解一下2023-09-09c語(yǔ)言網(wǎng)絡(luò)編程-標(biāo)準(zhǔn)步驟(比較簡(jiǎn)單)
這篇文章主要介紹了c語(yǔ)言網(wǎng)絡(luò)編程-標(biāo)準(zhǔn)步驟(比較簡(jiǎn)單),需要的朋友可以參考下2014-01-01如何在Qt中實(shí)現(xiàn)關(guān)于Json?的操作
JSON是一種輕量級(jí)數(shù)據(jù)交換格式,常用于客戶端和服務(wù)端的數(shù)據(jù)交互,不依賴于編程語(yǔ)言,在很多編程語(yǔ)言中都可以使用JSON,這篇文章主要介紹了在Qt中實(shí)現(xiàn)關(guān)于Json的操作,需要的朋友可以參考下2023-08-08C語(yǔ)言中字符串常用函數(shù)strcat與strcpy的用法介紹
以下是對(duì)C語(yǔ)言中字符串常用函數(shù)strcat與strcpy的使用方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07解析在main函數(shù)之前調(diào)用函數(shù)以及對(duì)設(shè)計(jì)的作用詳解
本篇文章是對(duì)在main函數(shù)之前調(diào)用函數(shù)以及對(duì)設(shè)計(jì)的作用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++ 中"emplace_back" 與 "push_back" 的區(qū)別
這篇文章主要介紹了C++ 中"emplace_back" 與 "push_back" 的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-04-04Qt基礎(chǔ)開(kāi)發(fā)之QString與QByteArray詳細(xì)用法與區(qū)別及QString QByteArray互轉(zhuǎn)
這篇文章主要介紹了Qt基礎(chǔ)開(kāi)發(fā)之QString與QByteArray詳細(xì)用法與區(qū)別及QString QByteArray互轉(zhuǎn),需要的朋友可以參考下2020-03-03