floyd演算法
floyd演算法採用的是(鬆弛技術),對在i和j之間的所有其他點進行一次鬆弛。
if d[i,j]>d[i,k]+d[k,j] then
d[i,j]:=d[i,k]+d[k,j];
時間複雜度:為o(n^3);
演算法描述:
a) 初始化:d[u,v]=a[u,v]
b) for k:=1 to n
for i:=1 to n
for j:=1 to n
if d[i,j]>d[i,k]+d[k,j] then
d[i,j]:=d[i,k]+d[k,j];
c) 演算法
結束:d即為所有點對的最短路徑矩陣
**如下:
#include#include#includeusing namespace std;
int graph[6][6];
int path[6][6];
#define inf 1000
void show()//顯示graph
else graph[i][j]=inf;}}
for (k=0 ;k>i>>j;
in>>graph[i][j];
graph[j][i]=graph[i][j];
}///floyd 圖中點的編號1 ~5
for( i=1;i<6;i++)
其實這個演算法很挫,很簡單,演算法效率也比較搓,但是可以找出正權圖中每兩個點之間的最短路徑。
**貼完了 求挑錯,求打臉!
最短路徑演算法 最短路
在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...
最短路徑 之Dijkstra演算法
dijkstra演算法dijkstra 鄰接矩陣 int n,e maxv maxv int dis maxv pre maxv pre用來標註當前結點的前乙個結點 bool vis maxv void dijkstra int s if u 1 return visit u true for in...
最短路徑 之Dijkstra演算法
dijkstra演算法 dijkstra 鄰接矩陣 int n,e maxv maxv int dis maxv pre maxv pre用來標註當前結點的前乙個結點 bool vis maxv void dijkstra int s if u 1 return visit u true for i...