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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu 1874 Dijkstra算法模板

發布時間:2024/10/6 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 1874 Dijkstra算法模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
單源最短路徑 迪杰斯特拉算法
1.初始化地圖,map[i][j]記錄城鎮 i,j之間最短的道路長度,
若無道路連通 ,則為極大值
2.從起始城鎮開始,用廣度優先搜索思想,嵌入松弛處理算法,
用dis[i]記錄起始城鎮到城鎮 i 的最短路徑長度;

3.答案位于dis[t],即終點t城鎮到起始城鎮的最小距離

#include<stdio.h> #include<queue> #define inf 10000000 using namespace std; int main(){int n,m;int map[200][200];//map[i][j]記錄城鎮 i 到 j 間最短連通道路長度int s,t;//記錄起始村莊和終點村莊的編號int dis[200];//記錄 i 號村莊到起始村莊的最短路徑長度int x,y,d;int i,j;while(scanf("%d%d",&n,&m)!=EOF){for(i=0;i<n;i++)for(j=0;j<n;j++)map[i][j]=inf;//所有路徑初始化為最大值while(m--){scanf("%d%d%d",&x,&y,&d);if(map[x][y]>d)map[x][y]=d,map[y][x]=d;} scanf("%d%d",&s,&t);queue<int> q;q.push(s);//起點入隊for(i=0;i<n;i++) dis[i]=inf;//所有城鎮到起始位置的距離初始化為最大值dis[s]=0;//起始城鎮到其自身的距離為0//所有與起始城鎮連接都遍歷完了,結束遍歷 while(!q.empty()) {x=q.front();q.pop();for(i=0;i<n;i++){if(map[x][i]!=inf){//從城鎮 x 到城鎮 i 的路徑(到起始城鎮)較短 if(dis[i]>dis[x]+map[x][i]){dis[i]=dis[x]+map[x][i];//跟新 i 城鎮到起始城鎮的最短距離q.push(i); }}} }if(dis[t]==inf)printf("-1\n");elseprintf("%d\n",dis[t]);} return 0; }

總結

以上是生活随笔為你收集整理的hdu 1874 Dijkstra算法模板的全部內容,希望文章能夠幫你解決所遇到的問題。

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