week7 作業B TT的旅行日記

2021-10-05 01:20:06 字數 2853 閱讀 3773

眾所周知,tt 有乙隻魔法貓。

今天他在 b 站上開啟了一次旅行直播,記錄他與魔法貓在喵星旅遊時的奇遇。 tt 從家裡出發,準備乘坐貓貓快線前往喵星機場。貓貓快線分為經濟線和商業線兩種,它們的速度與價錢都不同。當然啦,商業線要比經濟線貴,tt 平常只能坐經濟線,但是今天 tt 的魔法貓變出了一張商業線車票,可以坐一站商業線。假設 tt 換乘的時間忽略不計,請你幫 tt 找到一條去喵星機場最快的線路,不然就要誤機了!

input

輸入包含多組資料。每組資料第一行為 3 個整數 n, s 和 e (2 ≤ n ≤ 500, 1 ≤ s, e ≤ 100),即貓貓快線中的車站總數,起點和終點(即喵星機場所在站)編號。

下一行包含乙個整數 m (1 ≤ m ≤ 1000),即經濟線的路段條數。

接下來有 m 行,每行 3 個整數 x, y, z (1 ≤ x, y ≤ n, 1 ≤ z ≤ 100),表示 tt 可以乘坐經濟線在車站 x 和車站 y 之間往返,其中單程需要 z 分鐘

下一行為商業線的路段條數 k (1 ≤ k ≤ 1000)。

接下來 k 行是商業線路段的描述,格式同經濟線。

所有路段都是雙向的,但有可能必須使用商業車票才能到達機場。保證最優解唯一。

output

對於每組資料,輸出3行。第一行按訪問順序給出 tt 經過的各個車站(包括起點和終點),第二行是 tt 換乘商業線的車站編號(如果沒有使用商業線車票,輸出"ticket not used",不含引號),第三行是 tt 前往喵星機場花費的總時間。
**本題不忽略多餘的空格和製表符,且每一組答案間要輸出乙個換行**
sample input

4 1 4

41 2 2

1 3 3

2 4 4

3 4 5

12 4 3

sample output

1 2 425

我的思路:

這道題的題意是,要從乙個車站x到另乙個車站y,過程中要走經濟線(或者經濟線+一條商業線),找到最短的路徑。這裡的想法可以是利用求最短路的演算法,外加乙個記錄前驅節點的陣列pre,來記錄路徑。對於商業線的選擇上,可以對於每條商業線a->b,找到起點和終點分別到a和b的距離,取拼接最小值+商業線a->b的權重w,即為經過當前商業線的最短路徑。利用這樣的思想,在實際操作中,只要進行兩邊求最短路的操作(從起點開始/從終點開始),記錄兩個距離陣列,然後對於每條商業線遍歷計算距離,最後再和不走商業線做乙個對比就可以了。

我的總結:

最短路演算法包括dijkstra、bellman_ford,spfa,都應該靈活運用,並且不要搞混。

我的**:

#include

#include

#include

using

namespace std;

const

long

long inf =5*

1e8;

struct edg

edg[

20001];

bool fl=

false

;long

long dis[

10001][

2],pre[

10001][

2],inq[

10001][

2],n,nn,sta,s,e,m,x0,y0,w0,head[

1001

],ind,kn,min_dis,ans1,ans2;

priority_queueint,

int>

> que;

void

add(

long

long x,

long

long y,

long

long wei)

void

print0

(long

long xx)

print0

(pre[xx][0

]);printf

(" %d"

,xx);}

void

print1

(long

long xx)

printf

("%d\n"

,xx);}

void

init()

}void

bell

(long

long jug)}}

}int

main()

bell

(s);

bell

(e);

scanf

("%d"

,&nn)

; min_dis=inf;

ans1=ans2=0;

for(

long

long i=

0;iif(min_dis > dis[e][0

]) min_dis=dis[e][0

],ans1=0;

if(fl)

printf

("\n");

else fl=

true;if

(ans1)

else

}return0;

}

Week7 作業B TT 的旅行日記

眾所周知,tt 有乙隻魔法貓。今天他在 b 站上開啟了一次旅行直播,記錄他與魔法貓在喵星旅遊時的奇遇。tt 從家裡出發,準備乘坐貓貓快線前往喵星機場。貓貓快線分為經濟線和商業線兩種,它們的速度與價錢都不同。當然啦,商業線要比經濟線貴,tt 平常只能坐經濟線,但是今天 tt 的魔法貓變出了一張商業線車...

week7作業題 B TT 的旅行日記

眾所周知,tt 有乙隻魔法貓。今天他在 b 站上開啟了一次旅行直播,記錄他與魔法貓在喵星旅遊時的奇遇。tt 從家裡出發,準備乘坐貓貓快線前往喵星機場。貓貓快線分為經濟線和商業線兩種,它們的速度與價錢都不同。當然啦,商業線要比經濟線貴,tt 平常只能坐經濟線,但是今天 tt 的魔法貓變出了一張商業線車...

Week7 B TT 的旅行日記

眾所周知,tt 有乙隻魔法貓。今天他在 b 站上開啟了一次旅行直播,記錄他與魔法貓在喵星旅遊時的奇遇。tt 從家裡出發,準備乘坐貓貓快線前往喵星機場。貓貓快線分為經濟線和商業線兩種,它們的速度與價錢都不同。當然啦,商業線要比經濟線貴,tt 平常只能坐經濟線,但是今天 tt 的魔法貓變出了一張商業線車...