Vijos P1423 最佳路線

2021-07-23 10:41:11 字數 1685 閱讀 5188

題目描述

年久失修的賽道令國際汽聯十分不滿。汽聯命令主辦方立即對賽道進行調整,否則將取消其主辦權。主辦方當然必須馬上開始行動。

賽道測評人員經過了三天三夜的資料採集,選出了若干可以使用的道路和各道路行駛所需的時間。這些道路包括若干直道和彎道,每個直道連線兩個不同的彎道且為單向,兩個彎道之間可能有多條直道,通過直道和彎道都需要一定的時間。主辦方打算在這些可用道路中選出一部分作為賽道。賽道是由直道和彎道交替組成的一圈,賽道可多次經過同一條彎道,因為主辦方可以通過架設立交橋的方法避免撞車。為了使比賽更加精彩,主辦方希望選擇一條單圈時間最短的賽道,由於觀眾席的位置在彎道1,所以賽道必須經過彎道1(賽道至少要包含一條直道)。

輸入格式

第一行是兩個整數n,m(1<=n<=200,1<=m<=100000),分別表示彎道數和直道數。接下來n行,第i行是乙個整數ai(1<=ai<=1000),表示通過第i個彎道所消耗的時間。接下來m行,第j行是三個整數xj,yj,bj(1<=xj,yj<=n,1<=bj<=1000),表示從彎道xj到彎道yj有一條單向直道,且通過該直道所消耗的時間為bj。

輸出格式

乙個整數s,表示單圈時間最短的賽道的單圈時間,若無解則輸出-1。

樣例輸入1

3 6

1 1

2 1 2 3

2 3 5

3 1 1

3 2 1

2 1 10

1 3 15

樣例輸出1

樣例輸入2

3 4

1 1

2 1 2 4

1 3 5

2 3 5

3 2 10

樣例輸出2

-1這道題是乙個十分標準的弗洛伊德(floyd)題目,只需要將彎道作為點即可,而彎道的權值放到初度入度均能解決問題。

樣例輸入1

我們可以看到,最短環路為1->2->->3->1,值為13;

樣例輸入2

我們可以看到,並沒有一條經過一的迴路,所以無解。

c++實現方法

#include 

#include

int a[210][210],b[210];

int min(int a,int b)

int n,m;

int main()

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

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

for(int j=1;j<=n;j++)

a[i][j]=min(a[i][k]+a[k][j],a[i][j]);

if(a[1][1]<0x3f3f3f3f)

printf("%d",a[1][1]);

else

printf("-1");

return

0;}

最佳旅遊路線

題目描述 某旅遊景區的街道成網格狀。其中東西向德街道都是旅遊街,南北向的街道都是林蔭道。由於遊客眾多,旅遊街規定為單行道,遊客在旅遊街上只能從西向東走,在林蔭道上則既可從南向北,又可從北向南走。阿龍想到這個旅遊街區遊玩。他的好友阿福給了他一些建議,用分值表示所有旅遊街相鄰兩個路口之間的街道值得遊覽程...

Adobe Flex最佳學習路線

adobe flex 最佳 學習 路線 2007 08 29 11 30 csdn 摘要 目前 adobe flex 的中文版學習資料比較少,而且大多都很零散,不適合用來系統地學習。我在這裡羅列一下在我的學習過程中讀過的一些資料。當然是以 adobe 的官方文件為主,這些文件內容非常詳盡,應該作為學...

DP 最佳瀏覽路線

某旅遊區的街道成網格狀,其中東西向的街道都是旅遊街,南北向的街道都是林蔭道。由於遊客眾多,旅遊街被規定為單行道。遊客在旅遊街上只能從西向東走,在林蔭道上既可以由南向北走,也可以從北向南走。阿隆想到這個旅遊區遊玩。他的好友阿福給了他一些建議,用分值表示所有旅遊街相鄰兩個路口之間的道路值得瀏覽得程度,分...