題意:給n給城市,m條公路,公路是雙向的,起點s,終點d,並給出每條公路連線的兩個city的編號以及路費,求s到d的最短距離,若具有最短距離的路線不止一條,求出路費最少的一條。
思路:單源最短路徑問題,利用dijkstra演算法求出s到其他點的最短路徑,只不過加乙個路費cost,在dis相等的情況下,取cost最小值。
ac**:
#includeusingnamespace
std;
const
int inf=0x3f3f3f3f
;int
n,m,s,d;
int dis[505],cost[505],a[505][505],b[505][505],vis[505
];void
dijkstra()
else
if(!vis[i]&&dis[i]==dis[k]+a[k][i]&&cost[i]>cost[k]+b[k][i])
cost[i]=cost[k]+b[k][i];
}}int
main()
for(int i=0;ii)
dis[i]=a[s][i],cost[i]=b[s][i];
dis[s]=cost[s]=0
; dijkstra();
printf(
"%d %d\n
",dis[d],cost[d]);
return0;
}
7 7 旅遊規劃 25 分
有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入格式 輸入說明 輸入資料的第1行給出4個正整數n m s d,其中n 2 n 50...
7 7 旅遊規劃 25分
有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入格式 輸入說明 輸入資料的第1行給出4個正整數n m s d,其中n 2 n 50...
PTA 旅遊規劃 (最短路)
旅遊規劃 25 分 有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入說明 輸入資料的第1行給出4個正整數n m s d,其中n 2...