旅遊規劃(pta c語言)

2021-09-02 20:21:53 字數 1189 閱讀 1152

有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度、以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。

輸入說明:輸入資料的第1行給出4個正整數n、m、s、d,其中n(2≤n≤500)是城市的個數,順便假設城市的編號為0~(n−1);m是高速公路的條數;s是出發地的城市編號;d是目的地的城市編號。隨後的m行中,每行給出一條高速公路的資訊,分別是:城市1、城市2、高速公路長度、收費額,中間用空格分開,數字均為整數且不超過500。輸入保證解的存在。

在一行裡輸出路徑的長度和收費總額,數字間以空格分隔,輸出結尾不能有多餘空格。

4 5 0 3

0 1 1 20

1 3 2 30

0 3 4 10

0 2 2 20

2 3 1 20

3 40
用floyd演算法可以直接得到各點間的最短路徑,關鍵點在於如何選擇在具有多條最短路徑時,選擇花費最小的路徑。其實這也是乙個求最短路徑的過程,只是它具有乙個前提條件就是『』在路程為最短『』。這樣就可以稍微改動一下原floyd裡面的語句即可。

#include#include#define infinity 65535

#define max 501

typedef int weighttype;

typedef int datatype;

typedef int vertex;

typedef struct gnodeptrtognode,*mgraph;

typedef struct enodeptrtoenode,*edge;

mgraph creategraph(int vertexnum)

void insertedge(mgraph graph, edge e)

int d[max][max];

int cost[max][max];

int path[max][max];

void floyd(mgraph graph)

}for(k=0; knv; k++)

floyd(graph);

printf("%d%d",d[v][w],cost[v][w]);

return 0;

}

7 9 旅遊規劃

輸入說明 輸入資料的第1行給出4個正整數n m s d,其中n 2 n 500 是城市的個數,順便假設城市的編號為0 n 1 m是高速公路的條數 s是出發地的城市編號 d是目的地的城市編號。隨後的 m行中,每行給出一條高速公路的資訊,分別是 城市1 城市2 高速公路長度 收費額,中間用空格分開,數字...

7 9 旅遊規劃

有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入說明 輸入資料的第1行給出4個正整數n m s d,其中n 2 n 500 是城市...

Dijkstra 旅遊規劃

有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入格式 輸入說明 輸入資料的第1行給出4個正整數n m s d,其中n 2 n 50...