hdu 3790 最短路徑問題

來源:互聯網
上載者:User

標籤:des   style   java   color   os   strong   

最短路徑問題Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12105    Accepted Submission(s): 3668

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 21 2 5 62 3 4 51 30 0
 
Sample Output
9 11
 
Dijkstra演算法
#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;#define M 1005#define INF 99999int map[M][M],mat[M][M];int n,m;void Dijkstra(int s,int t){int i,j,k;int min;int d[M],l[M],v[M];for(i=1;i<=n;i++) {d[i]=map[s][i]; //距離l[i]=mat[s][i]; //費用}memset(v,0,sizeof(v));v[s]=1;  for(i=1;i<n;i++)  // 遍曆n-1個節點{min=INF;for(j=1;j<=n;j++){if(!v[j] && d[j] <min){min=d[j];k=j;}}v[k]=1;for(j=1;j<=n;j++){  if(!v[j] && d[j]>d[k]+map[k][j])  //距離和費用同時更新  {d[j]=d[k]+map[k][j];l[j]=l[k]+mat[k][j];  }  else if(d[j]==d[k]+map[k][j])    {if(l[j]>l[k]+mat[k][j])l[j]=l[k]+mat[k][j];  }}}printf("%d %d\n",d[t],l[t]);  }int main (){int a,b,d,p,s,t;int i,j;while(scanf("%d%d",&n,&m)!=EOF){if(n==0&&m==0) break;for(i=1;i<=n;i++)     //初始化for(j=1;j<=n;j++){map[i][j]=INF;mat[i][j]=INF;}for(i=0;i<m;i++){scanf("%d%d%d%d",&a,&b,&d,&p);if(map[a][b]>d){map[a][b]=map[b][a]=d;mat[a][b]=mat[b][a]=p;}else if(map[a][b]==d)  // 路徑長度相同時,取最小費用if(mat[a][b]>p)   mat[a][b]=mat[b][a]=p;}scanf("%d%d",&s,&t);Dijkstra(s,t);   //起點和終點}return 0;}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.