題目描述
年久失修的賽道令國際汽聯十分不滿。汽聯命令主辦方立即對賽道進行調整,否則將取消其主辦權。主辦方當然必須馬上開始行動。
賽道測評人員經過了三天三夜的資料採集,選出了若干可以使用的道路和各道路行駛所需的時間。這些道路包括若干直道和彎道,每個直道連線兩個不同的彎道且為單向,兩個彎道之間可能有多條直道,通過直道和彎道都需要一定的時間。主辦方打算在這些可用道路中選出一部分作為賽道。賽道是由直道和彎道交替組成的一圈,賽道可多次經過同一條彎道,因為主辦方可以通過架設立交橋的方法避免撞車。為了使比賽更加精彩,主辦方希望選擇一條單圈時間最短的賽道,由於觀眾席的位置在彎道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 最佳瀏覽路線
某旅遊區的街道成網格狀,其中東西向的街道都是旅遊街,南北向的街道都是林蔭道。由於遊客眾多,旅遊街被規定為單行道。遊客在旅遊街上只能從西向東走,在林蔭道上既可以由南向北走,也可以從北向南走。阿隆想到這個旅遊區遊玩。他的好友阿福給了他一些建議,用分值表示所有旅遊街相鄰兩個路口之間的道路值得瀏覽得程度,分...