空中樓閣 最短路

2022-07-24 08:27:09 字數 1637 閱讀 9047

【問題描述】

話說z4陰差陽錯地來到了神秘島。不久,他們發現,這是乙個由n個小島和乙個中心島組成的群島,群島之間有m座橋。令他們感到驚訝的是,這些橋並不是固定不變的,經較長時間的觀察,發現它們會隨時間作週期性的變化(即橋的兩端會不斷更換)。

立方很早就留意到遠遠的那個中心島了。他發現島的上空好像有乙個很巨大的東西,但實在太遠了,看不清楚。此時jakrinchose得意地從身上拿出乙個超高倍數望遠鏡,好像很自豪的樣子,因為他平時專門用來看美女的工具此時終於派得上用場了。

「那是一間小屋!架在一棵好大好大的樹上!」

「terrific!我們也許可以暫時在那安頓,好用來遮風避雨!」

於是他們便決定前往中心島上的那間空中樓閣。z4的懶惰是出了名的,他們當然希望越早到越好,那麼,你能幫幫他們嗎?

為方便計算,z4把小島按1..n編號,0表示中心島。z4一開始在編號為1的小島上。在島上行走的時間忽略不計,過橋的時間為1個單位。島上的橋變化的週期為t,在nt+i(n=0,1,2,…;i=1,2,…,t)時刻島上的橋為第i種狀態,一開始的時刻為1。兩個小島間可能有多條橋相連。在任一時刻,z4可以選擇過橋,也可以原地不動。當然,如果無橋可過,z4只能在原地等待。

【輸入格式】

輸入檔案house.in的第一行包括三個整數n(1<=n<=80),m(1<=m<=10000)和t(1<=t<=10),分別表示小島的個數,島上橋的數量和橋改變的週期t。

接下來分別描述第1..t種狀態,每種狀態有m行,每行有兩個整數a, b(0<=a,b<=n),表示這種狀態時小島a和b有一條橋相連。兩狀態之間用一空行隔開。

【輸出格式】

輸出檔案house.out僅有乙個整數,表示z4最少得花多少時間到達中心島。如果z4無法到達中心島,則輸出「poor z4!」。

【輸入樣例1】

4 5 2

1 21 3

1 42 0

4 01 3

1 32 3

4 33 0

【輸出樣例1】

解題報告

仔細分析,這題就是乙個最短路模型,不過每隔一段時間有些邊會消失,有些會出現。我們可以用最短路模板,再判斷是否鬆弛時加上乙個等待的時間。即等到所走的邊出現的時間。這樣就可以啦。

#include#define pair pair#define maxn 100+10

#define maxm 200010+10

using

namespace

std;

struct

edgeedge[maxm];

intn,m,num,v[maxn],dis[maxn],head[maxn],t,s;

void add(int

from,int to,int dis,int

exi)

int wait(int i,int

dis)

}void

bell()

}}int

main()

}s=2;n++;

bell();

if(dis[1]==999999999) printf("

poor z4!\n");

else printf("

%d\n

",dis[1

]);

return0;

}

我的空中樓閣

我想要房子周圍有一大片竹林,夏天不會太熱,可以聽到蟲叫,最好還有各種各樣的小鳥。冬天會下雪,看出去是一片白茫茫,房子的外牆不要很鮮豔,要看上去讓人平靜一些。門口要有門檻,走進走出的時候可以用跳的,感覺那樣會很有趣。屋子的後面最好可以有乙個不大不小的湖,可以種上很多荷花,划划小船,釣釣魚。湖的旁邊要有...

IT應用不能建成「空中樓閣」

本篇文章版權由ecf 和hp所有 偶遇一資訊化應用案例,說某企業感覺舊的模組式資訊管理比較落後,計畫重新規劃新的系統,該企業cio靈光一閃,倒行逆施,從bi做起,然後再實施erp系統。據介紹說,企業實施資訊化系統,利用逆向思維,打破常規模式,從bi做起,從應用的頂點做起,開創了國內資訊化建設的先河。...