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...