floyd演算法:
思路 :遍歷計算 i 點 經過 k 點 到 j 點 的最小路徑值 (動態規劃思路)
缺點:時間複雜度高,不能解決負邊情況
輸入樣例:
4 81 2 2
1 3 6
1 4 4
2 3 3
3 1 7
3 4 1
4 1 5
4 3 12
輸出樣例:
1-->2:2
1-->3:5
1-->4:4
2-->1:9
2-->3:3
2-->4:4
3-->1:6
3-->2:8
3-->4:1
4-->1:5
4-->2:7
4-->3:10
#include #includedijkstra演算法:#include
#include
#include
#include
#include
using
namespace
std;
const
int inf=0x7fffff
;const
long
long mod=1e9+7
;const
double pi=acos(-1
);int
n,m,start,end;
int ans=9999999
;bool vis[105
];int e[105][105
];void init()
}} void floyd()}}
}}int
main()
floyd();
for(int i=1;i<=n;i++)
} return0;
}
思路:依此找起點可達的點的最小值點。通過最小值點再訪問其他點。不斷更新最小距離。
測試資料:
6 9 1 (6個點9條邊 1為起點)
1 2 1
1 3 12
2 3 9
2 4 3
3 5 5
4 3 4
4 5 13
4 6 15
5 6 4
輸出資料:
1-->1:0
1-->2:1
1-->3:8
1-->4:4
1-->5:13
1-->6:17
#include #includebellman_floyd演算法:#include
#include
#include
#include
#include
using
namespace
std;
const
int inf=0x7fffff
;const
long
long mod=1e9+7
;const
double pi=acos(-1
);int
n,m,start,end;
int ans=9999999
;bool vis[105
];int e[105][105
];void init()
}} void dijkstra(int s)
vis[s]=1
;
for(int i=1;i<=n;i++)
}vis[minp]=1; //
設定訪問
for(int v=1;v<=n;v++)}}
}for(int i=1;i<=n;i++)
}int
main()
dijkstra(s);
//s 為起點
return0;
}
思路:經過n-1次迭代,判斷每次迭代判斷能不能用u[i]-->v[i]
使源點到v[i]的最短路徑變短。
優點:可以解決帶負邊的問題。
輸入樣例:
5 5 1 (5個點 5條邊 起點1)
2 3 2
1 2 -3
1 5 5
4 5 2
3 4 3
輸出樣例:
0 -3 -1 2 4 (起點到各個點的最短路徑)
#include #include#include
#include
#include
#include
#include
using
namespace
std;
const
int inf=999999;//
0x7fffff
const
long
long mod=1e9+7
;const
double pi=acos(-1
);int
n,m;
int ans=9999999
;bool vis[105
];int dis[105],u[105],v[105],w[105
];void bellman_floyd(int
s) }
//bool ok=0;
//for(int k=1;k<=m;k++)
}int
main()
bellman_floyd(s);
for(int i=1;i<=n;i++)
return0;
}
最短路徑 鄰接矩陣
思路 先記錄1到所有點的距離 沒有連線記為無窮大 為到達該點的最短路徑長,然後從1開始利用貪心思想依次找出到下乙個連線點的最短距離,然後再找以該點為基準的下乙個距離最近的點,判斷從1先到乙個點再到該點的距離與從1直接到該點距離的大小,若小,則更新dis距離長,否則不更新 若不理解,建議看看簡單易懂 ...
Dijkstra最短路徑演算法鄰接矩陣版
模板參考kuangbin 資料結構方面 includeusing namespace std const int maxn 1010 const int inf 0x3f3f3f3f bool vis maxn int pre maxn 記錄beg到i路徑上的父結點 pre beg 1 int co...
最短路徑之Dijkstra演算法(鄰接矩陣實現)
單源最短路徑 就是從某乙個頂點出發,到圖中任意頂點之間的最短路徑 演算法概述 dijkstra演算法適用於解決單源最短路徑的問題。即 從源點到任意指定頂點之間的最短距離的問題 但dijkstra演算法要求所有邊的權值非負。看過prime演算法的同學都知道,dijkstra演算法與prime演算法很相...