日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++实现有向图最短路径-Dijkstra单源最短路径算法

發布時間:2023/12/4 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++实现有向图最短路径-Dijkstra单源最短路径算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <iostream> using namespace std; #define INFINE 99999999//假裝我是無窮大 const int N = 1010; bool vis[N]; int dis[N]; int graph[N][N];//圖 //Dijkstra算法計算點v到圖上各個點的最短距離 void Dijkstra(int graph[][N], int v, int n) {//v為起點,//n為點個個數for (int i = 1; i <= n; i++)dis[i] = graph[v][i];vis[v] = true;dis[v] = 0;for (int i = 2; i <= n; i++) {int minx = INFINE;int minid = 0;for (int j = 1; j <= n; j++) {if (!vis[j] && dis[j] < minx) {minx = dis[j];minid = j;}}vis[minid] = true;for (int k = 1; k <= n; k++) {if (graph[minid][k] < INFINE)if (dis[k] > dis[minid] + graph[minid][k])dis[k] = dis[minid] + graph[minid][k];}}for (int i = 1; i <= n; i++)cout << dis[i] << " ";cout << endl; }int main() {int vertexnum, arcnum;cin >> vertexnum >> arcnum;//點的個數,邊的條數for (int i = 1; i <= vertexnum; i++)for (int j = 1; j <= vertexnum; j++)graph[i][j] = INFINE;for (int i = 1; i <= arcnum; i++) {int a, b, w;cin >> a >> b >> w;//a為起點,b為終點,w為權重graph[a][b] = w;}Dijkstra(graph, 1, vertexnum);//以點1為起點return 0; }

總結

以上是生活随笔為你收集整理的C++实现有向图最短路径-Dijkstra单源最短路径算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。