Flyod 演算法 兩兩之間的最短路徑

2022-03-13 17:28:39 字數 873 閱讀 1737

flyod 演算法(兩兩之間的最短路徑)

動態規劃方法,通過相鄰矩陣, 然後把最後的結果存在這麼乙個矩陣裡面,(i,j),

#include

#include

using namespace std;

#define m 301

#define lim 200000000

int w[m][m],d[2][m][m];

void floyd(int g[m][m],int d[2][m][m],int n)

d[0][i][i]=0;

} //

這裡是令

d[0]=g

for(k=1;k<=n;k++) }}

2. dijstra演算法(單源節點演算法,乙個到其他定點所有的演算法)

#define m 101

#define lim 20000000

int g[m][m],d[m],fd[2][m][m],gt[m][m],set[m];

inline void init(int d[m],int n,int s)

inline void relax(int d[m],int u,int v,int duv)

void dijkstra(int g[m][m],int d[m],int n,int s) }}

3. bellmanford演算法

g,是乙個矩陣圖,用於表達有向圖 點之間的權重。

inline void init(int d[m],int n,int s)

inline void relax(int d[m],int u,int v,int duv)

void bell_man(int g[m][m],int d[m],int n,int s) }}

兩種最短路演算法總結

這裡只總結兩種最短路演算法,第一是 dijkstra,第二是 spfa 這兩種演算法都用了佇列優化,dijkstra是優先佇列,spfa是普通佇列 dijkstra 先介紹第一種,也是用的最多的一種最短路演算法 dijkstra 這種演算法的思想就是先根據給定的起點 s 找到這個點 s 所能連的點,...

最短路之 尋找每兩點之間最短路中的最長路

題目 hdu4460 題意 尋找每兩點之間最短路中的最長路。若存在某兩點不連通,就輸出 1.解答 對每個點spfa,然後找最長的邊。用鄰接鍊錶存 注意 雙向邊!include include include include include include includeusing namespace...

冒泡演算法(兩兩比較,最小上冒)

假設排序陣列a n 按從小到大排列 int a int length a.length 準備好交換方法 private void swap int j,int i 排序好後列印 for int k 0 k length k 1.冒泡演算法 兩兩比較,把小的往左移 a n 和 a n 1 比較,如果a...