九度 題目1341 艾薇兒的演唱會 40分

2021-08-01 08:52:57 字數 1483 閱讀 2076

題目描述:艾薇兒今天來到了中國,她計畫兩天後在哈爾濱舉行一場個人的演唱會。由於出現了緊急情況,演唱會的舉辦方要求艾薇兒提前舉行演唱會。艾薇兒現在在北京,她需要找出一條從北京到哈爾濱耗時最短的線路,以便盡快到達哈爾濱。

中國的鐵路線非常複雜,有很多條路線可以從北京到達哈爾濱。艾薇兒在網上找到了鐵路線各個線路上所需花費的時間,但是她還是看不出來哪一條線路可以最快地到達哈爾濱。你有辦法幫助艾薇兒找出從北京到哈爾濱所需的最短時間嗎?找出來的人可以免費獲得現場演唱會門票一張哦。

輸入:輸入的第一行包括乙個整數n(2<=n<=100),代表艾薇兒手上拿到的設有鐵路站點的城市的個數,其中城市從1到n進行編號。以及m(1<=m<=1000),代表有m條鐵路線路,每條鐵路線路只連線兩個城市。

接下來的一行有兩個數,a和b(1<=a,b<=n),分別表示北京和哈爾濱的編號。

接下來有m行,每行有三個數x,y(1<=x,y<=n),t(1<=t<=1000),表示從城市x到城市y所需時間為t。

輸出:請輸出艾薇兒從北京到哈爾濱最少需要多長時間。你可以放心地認為肯定存在一條路線可以從北京到哈爾濱。

樣例輸入:

3 4

1 31 2 1

3 2 3

2 3 4

3 1 8

樣例輸出:

4

1.火車能從城市x到城市y,就能從城市y到城市x,並且同一列火車來回所花費的時間是一樣的。如果在x和y之間有不止一輛火車通行,則不同火車從x到y或者從y到x所花費的時間可能不相同。

2.雖然城市數有n個,但不保證所有的城市都能互相到達。可以保證的是,從北京到哈爾濱一定會有一條通路。

採用dijkstra演算法來計算最短路徑,由於北京和哈爾濱城市的代號不一定,所以要以北京的代號作為出發點,哈爾濱的代號作為結束點。

具體看**:

#include#includeusing namespace std;

int v[101][101];

bool used[101];

int int_max=21474836;

int m,n,a,b;

int main()

}for(j=1;j<=n;j++)//將北京設定為出發點

sum[j]=v[a][j];

used[a]=true;

sum[a]=0;

for(j=0;jsum[k])//找到最短的、未訪問的已達點

if(tv==int_max)

break;

used[tp2]=true;

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

if(!used[k]&&v[tp2][k]sum[tp2]+v[tp2][k])//將最短的已達點設定成訪問過,並且更新這個點相鄰的點的最短路徑

sum[k]=sum[tp2]+v[tp2][k];

}cout<

九度oj 題目1114 神奇的口袋

有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john...

九度題目1070 今年的第幾天?

題目描述 輸入年 月 日,計算該天是本年的第幾天。輸入 包括三個整數年 1 y 3000 月 1 m 12 日 1 d 31 輸出 輸入可能有多組測試資料,對於每一組測試資料,輸出乙個整數,代表input中的年 月 日對應本年的第幾天。樣例輸入 1990 9 20 2000 5 1 樣例輸出 263...

九度oj 題目1114 神奇的口袋

題目1114 神奇的口袋 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 646 解決 387 題目描述 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物...