国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

SDUT 3363 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)之圖論七:驢友計(jì)劃

2019-11-08 02:02:51
字體:
供稿:網(wǎng)友

SDUT 3363 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)之圖論七:驢友計(jì)劃

Time Limit: 1000MS Memory Limit: 65536KB


PRoblem Description

做為一個(gè)資深驢友,小新有一張珍藏的自駕游線路圖,圖上詳細(xì)的標(biāo)注了全國(guó)各個(gè)城市之間的高速公路距離和公路收費(fèi)情況,現(xiàn)在請(qǐng)你編寫一個(gè)程序,找出一條出發(fā)地到目的地之間的最短路徑,如果有多條路徑最短,則輸出過路費(fèi)最少的一條路徑。

Input

連續(xù)T組數(shù)據(jù)輸入,每組輸入數(shù)據(jù)的第一行給出四個(gè)正整數(shù)N,M,s,d,其中N(2 <= N <= 500)是城市數(shù)目,城市編號(hào)從0~N-1,M是城市間高速公路的條數(shù),s是出發(fā)地的城市編號(hào),d是目的地的城市編號(hào);隨后M行,每行給出一條高速公路的信息,表示城市1、城市2、高速公路長(zhǎng)度、收費(fèi)額,中間以空格間隔,數(shù)字均為整數(shù)且不超過500,輸入數(shù)據(jù)均保證有解。

Output

在同一行中輸出路徑長(zhǎng)度和收費(fèi)總額,數(shù)據(jù)間用空格間隔。

Example Input

1 4 5 0 3 0 1 1 20 1 3 2 30 0 3 4 10 0 2 2 20 2 3 1 20

Example Output

3 40

Hint

參考 SDUT 1867 最短路徑問題http://blog.csdn.net/yxc9806/article/details/56005055

Submit

#include <bits/stdc++.h>#define INF 0x3f3f3f3fconst int MAXN = 510;using namespace std;int N, M, s, d;int mp[MAXN][MAXN], cost[MAXN][MAXN];bool visit[MAXN];int dist[MAXN];int dcost[MAXN];void dijkstra(){ int i, j, k; memset(visit, 0, sizeof(visit)); for(i = 0; i < N; i++) { dist[i] = mp[s][i]; dcost[i] = cost[s][i]; } dist[s] = 0; visit[s] = 0; for(j = 1; j < N; j++) { int mi = INF; int dmi = INF; for(i = 0; i < N; i++) { if(!visit[i]) { if(dist[i] < mi || (dist[i] == mi && dcost[i] < dmi)) { mi = dist[i]; dmi = dcost[i]; k = i; } } } visit[k] = 1; for(i = 0; i < N; i++) { if(!visit[i] && mp[k][i] < INF) { if(dist[k] + mp[k][i] < dist[i] || (dist[k] + mp[k][i] == dist[i] && dcost[k] + cost[k][i] < dcost[i])) { dist[i] = dist[k] + mp[k][i]; dcost[i] = dcost[k] + cost[k][i]; } } } } printf("%d %d/n", dist[d], dcost[d]);}int main(){ int T, i; scanf("%d", &T); while(T--) { memset(mp, INF, sizeof(mp)); scanf("%d %d %d %d", &N, &M, &s, &d); int u, v, l, c; for(i = 0; i < M; i++) { scanf("%d %d %d %d", &u, &v, &l, &c); mp[u][v] = mp[v][u] = l; cost[u][v] = cost[v][u] = c; } for(i = 0; i < M; i++) mp[i][i] = cost[i][i] = 0; dijkstra(); } return 0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江达县| 麻栗坡县| 泗水县| 焉耆| 巴彦淖尔市| 宾阳县| 新兴县| 瑞安市| 城步| 内乡县| 沾益县| 昂仁县| 玉龙| 贡嘎县| 峨边| 新宾| 炉霍县| 龙海市| 洛扎县| 胶州市| 辽阳县| 延安市| 缙云县| 濉溪县| 日照市| 民县| 聊城市| 南昌县| 西平县| 台江县| 交城县| 顺昌县| 芮城县| 图们市| 沂南县| 安塞县| 望谟县| 安塞县| 黎平县| 凌云县| 乌拉特中旗|