資料結構與演算法實驗題7 1 M 商人的求救

2021-10-01 18:12:58 字數 1525 閱讀 6968

問題描述:

a 國正面臨著一場殘酷的戰爭,城市被支援不同領導的兩股勢力佔據,作為乙個商人,m

先生並不太關心政治,但是他知道局勢很嚴重,他希望你能救他出去。

m 先生說:「為了安全起見,我們的路線最多只能包含一條連線兩股不同勢力城市的道

路」。m 先生想知道最快多久能到達目的地。

資料輸入:

第一行n(2<=n<=600),代表城市個數。第二行m(0<=m<=10000),代表道路條數。

接下來m 行每行三個數a,b,t。代表一條從城市a 到城市b 的路(雙向邊)需要耗時

t(1<=t<=1500)。

接下來一行n 個數,這些數隻會是1 或者2,第i 個數字代表第i 個城市屬於第幾股勢

力。為了簡化問題,我們假設開始時m 先生在城市1,目的地是城市2,城市1 屬於第1 股

勢力,城市2 屬於第2 股勢力。

道路是雙向的。資料保證沒有重邊。

結果輸出:

輸出最少需要的時間。如果無法到達則輸出-1。

輸入示例: 輸出示例:21

1 2 100

1 210033

1 2 100

1 3 40

2 3 50

1 2 1905

53 1 200

5 3 150

2 5 160

4 3 170

4 2 170

1 2 2 2 1

540並查集+dijstra演算法

1 #include2 #include3 #include4

#define inf 0xffffff

5int g[601][601];6

struct

ufs7

u;10

int find(int

e)11

16void funion(int i,int

j)17

20void dijstra(int

n)21

37 used[j]=1;38

for(k=2;k<=n;k++)

3944

else

4549}50

}51}52

intmain()

5364

for(i=1;i<=m;i++)

6569

for(i=1;i<=n;i++)

7077

dijstra(n);

78if(g[1][2]==inf)

79 printf("

-1\n");

80else

81 printf("

%d\n

",g[1][2

]);82

83return0;

84 }

view code

5910

031202110

m.cpp

ac|ac|ac|ac|ac|ac|ac|ac|ac|ac|

77ms

1660kb

資料結構與演算法實驗題7 1 M 商人的求救

問題描述 a 國正面臨著一場殘酷的戰爭,城市被支援不同領導的兩股勢力佔據,作為乙個商人,m 先生並不太關心政治,但是他知道局勢很嚴重,他希望你能救他出去。m 先生說 為了安全起見,我們的路線最多只能包含一條連線兩股不同勢力城市的道 路 m 先生想知道最快多久能到達目的地。資料輸入 第一行n 2 n ...

演算法與資料結構實驗題1 9

實驗任務 上回說到,你奔走於各個世界線拯救靜靜。現在,完成任務的你決定玩個簡單的遊戲靜一靜。我們知道,數字在計算機裡是用二進位制儲存的,現在你想知道如果把乙個數字的二進位制倒過來是多少。比如 int a 5,用二進位制表示就是00000000000000000000000000000101。把它倒過...

資料結構 程式設計題7 1

設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...