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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HDU 3790 最短路径问题

發布時間:2024/8/26 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 3790 最短路径问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最短路徑問題

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 18046 Accepted Submission(s): 5413

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 0Sample Output 9 11

兩個權值,多一個判斷條件

#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; #define inf 0x3f3f3f3f; int n,m,a,b,c,e; struct node {int d,p; }mapp[10010][10010],dis[10010]; int state[10010]; void init() {for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j){mapp[i][j].d=0;mapp[i][j].p=0;}else{mapp[i][j].d=inf;mapp[i][j].p=inf;}}} } void dj(int x,int y) {for(int i=1;i<=n;i++){dis[i].d=mapp[x][i].d;dis[i].p=mapp[x][i].p;}state[x]=1;dis[x].d=0;dis[x].p=0;int k;for(int i=1;i<=n;i++){int mind=inf;int minp=inf;for(int j=1;j<=n;j++){if(state[j]==0&&mind>dis[j].d){mind=dis[j].d;minp=dis[j].p;k=j;}if(state[j]==0&&mind==dis[j].d&&minp>dis[j].p){mind=dis[j].d;minp=dis[j].p;k=j;}}state[k]=1;for(int j=1;j<=n;j++){if(state[j]==0&&dis[j].d>mind+mapp[k][j].d)dis[j].d=mind+mapp[k][j].d,dis[j].p=minp+mapp[k][j].p;if(state[j]==0&&dis[j].d==mapp[k][j].d+mind&&dis[j].p>minp+mapp[k][j].p)dis[j].d=mind+mapp[k][j].d,dis[j].p=minp+mapp[k][j].p;}}printf("%d %d\n",dis[y].d,dis[y].p); } int main() {while(scanf("%d%d",&n,&m)&&(n!=0&&m!=0)){init();while(m--){scanf("%d%d%d%d",&a,&b,&c,&e);if(mapp[a][b].d>c||(mapp[a][b].d==c&&mapp[a][b].p>e)){mapp[a][b].d=mapp[b][a].d=c;mapp[a][b].p=mapp[b][a].p=e;}}int x,y;scanf("%d%d",&x,&y);memset(state,0,sizeof(state));dj(x,y);}return 0; }

轉載于:https://www.cnblogs.com/nanfenggu/p/7899999.html

總結

以上是生活随笔為你收集整理的HDU 3790 最短路径问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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