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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

POJ - Til the Cows Come Home(Dijkstra)

發(fā)布時(shí)間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ - Til the Cows Come Home(Dijkstra) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意:

有N個(gè)點(diǎn),給出從a點(diǎn)到b點(diǎn)的距離,當(dāng)然a和b是互相可以抵達(dá)的,問(wèn)從1到n的最短距離

分析:

典型的模板題,但是一定要注意有重邊,因此需要對(duì)輸入數(shù)據(jù)加以判斷,保存較短的邊,這樣才能正確使用模板。

題解

#include<iostream> #include<Queue> #include<cstdio> #include<vector> #include<string.h> using namespace std; #define maxn 2001 #define inf 0x3f3f3f int map[maxn][maxn]; int dist[maxn]; bool visited[maxn]; typedef pair<int,int> P; void dijkstra(int s,int n){priority_queue<P,vector<P>,greater<P> > Q;memset(visited,0,sizeof(visited));for(int i=1;i<=n;i++){dist[i]=inf;}dist[s]=0;Q.push(P(0,s));while(!Q.empty()){ int v=Q.top().second;Q.pop();if(visited[v]) continue;visited[v]=true;for(int i=1;i<=n;i++){int len=dist[v]+map[v][i];if(dist[i]>len){dist[i]=len;Q.push(P(len,i));}}} } int main(){int n,t;while(scanf("%d %d",&t,&n)!=EOF){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){map[i][j]=(i==j?0:inf);}}while(t--){int b,c,d;scanf("%d %d %d",&b,&c,&d);if(map[b][c]>d){map[b][c]=d;map[c][b]=d;}}dijkstra(n,n);printf("%d\n",dist[1]);} }

轉(zhuǎn)載于:https://www.cnblogs.com/ZJUT-jiangnan/p/3934516.html

總結(jié)

以上是生活随笔為你收集整理的POJ - Til the Cows Come Home(Dijkstra)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。