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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hdu 3790 最短路径dijkstra(多重权值)

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 3790 最短路径dijkstra(多重权值) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最短路徑問題

Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 41239????Accepted Submission(s): 11918


Problem Description 給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。

?

Input 輸入n,m,點的編號是1~n,然后是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最后一行是兩個數 s,t;起點s,終點。n和m為0時輸入結束。
(1<n<=1000, 0<m<100000, s != t)

?

Output 輸出 一行有兩個數, 最短距離及其花費。

?

Sample Input 3 2 1 2 5 6 2 3 4 5 1 3 0 0

?

Sample Output 9?11

?

#include<iostream> #include<cstdio> #include<cstring> #define MAX 1000000 using namespace std; int a[1005][1005]; int b[1005][1005]; int dis[1005]; int val[1005]; int vis[1005];void dijkstra(int start, int n) {int i, j, k, min;for (i = 1; i <= n; i++)//(初始化)存放起點到其余頂點的距離 {dis[i] = a[start][i];val[i] = b[start][i];}dis[start] = 0;val[start] = 0;for (i = 1; i <= n - 1; i++){min = MAX;k = 0;for (j = 1; j <= n; j++) //求出初始起點s直接到j點距離最短的點的下標值 {if (vis[j]==0 && min > dis[j]){min = dis[j];k = j;}}vis[k] = 1;if (k == 0)return;for (j = 1; j <= n; j++){if (dis[j] > dis[k] + a[k][j])//若找到其他途徑比從1號頂點直接到目的頂點的距離短,則替換掉 {dis[j] = dis[k] + a[k][j];val[j] = val[k] + b[k][j];}else if (dis[j] == dis[k] + a[k][j] && val[j] > val[k] + b[k][j])//如果距離相同,取最小花費 {val[j] = val[k] + b[k][j];}}} }int main() {int n, m;int i;int s, t;while (scanf("%d%d", &n, &m) && n + m){int t1, t2, t3, t4;memset(vis, 0, sizeof(vis));memset(a, MAX, sizeof(a));//初始化所有點的距離/花費為無窮大memset(b, MAX, sizeof(b));for (i = 0; i < m; i++){scanf("%d%d%d%d", &t1, &t2, &t3, &t4);if (a[t1][t2] > t3)//去重 {a[t1][t2] = a[t2][t1] = t3;b[t1][t2] = b[t2][t1] = t4;}}scanf("%d%d", &s, &t);dijkstra(s, n);printf("%d %d\n", dis[t], val[t]);}

?

?

轉載于:https://www.cnblogs.com/-citywall123/p/10877978.html

總結

以上是生活随笔為你收集整理的hdu 3790 最短路径dijkstra(多重权值)的全部內容,希望文章能夠幫你解決所遇到的問題。

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