bzoj1641 奶牛跨欄 最短路

2021-07-05 12:49:26 字數 1029 閱讀 1002

farmer john 想讓她的奶牛準備郡級跳躍比賽,貝茜和她的夥伴們正在練習跨欄。她們很累,所以她們想消耗最少的能量來跨欄。 顯然,對於一頭奶牛跳過幾個矮欄是很容易的,但是高欄卻很難。於是,奶牛們總是關心路徑上最高的欄的高度。 奶牛的訓練場中有 n (1 ≤ n ≤ 300) 個站台,分別標記為1..n。所有站台之間有m (1 ≤ m ≤ 25,000)條單向路徑,第i條路經是從站台si開始,到站台ei,其中最高的欄的高度為hi (1 ≤ hi ≤ 1,000,000)。無論如何跑,奶牛們都要跨欄。 奶牛們有 t (1 ≤ t ≤ 40,000) 個訓練任務要完成。第 i 個任務包含兩個數字 ai 和 bi (1 ≤ ai ≤ n; 1 ≤ bi ≤ n),表示奶牛必須從站台ai跑到站台bi,可以路過別的站台。奶牛們想找一條路徑從站台ai到站台bi,使路徑上最高的欄的高度最小。 你的任務就是寫乙個程式,計算出路徑上最高的欄的高度的最小值。

行 1: 兩個整數 n, m, t 行

2..m+1: 行 i+1 包含三個整數 si , ei , hi 行 m+2..m+t+1: 行 i+m+1 包含兩個整數,表示任務i的起始站台和目標站台: ai , bi

行 1..t: 行 i 為乙個整數,表示任務i路徑上最高的欄的高度的最小值。如果無法到達,輸出 -1。

5 6 3

1 2 12

3 2 8

1 3 5

2 5 3

3 4 4

2 4 8

3 41 2

5 148-1

題解:隨便做做好了。

**:

#include#include#includeusing namespace std;

int n,m,x,y,v,f[301][301],map[301][301],t;

int main()

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

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

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

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

}

BZOJ1641Cow Hurdles 奶牛跨欄

1641 usaco2007 nov cow hurdles 奶牛跨欄 time limit 5 sec memory limit 64 mb submit 511 solved 336 description farmer john 想讓她的奶牛準備郡級跳躍比賽,貝茜和她的夥伴們正在練習跨欄。她們...

最短路樹 BZOJ 3694 最短路

題目傳送門 許可權題警告 顯然可以發現,將1到i路徑上的最後一條路切斷後,需要重新找到一條從i的子樹出發的最短路徑重新回到最短路樹上去.因此考慮一條邊什麼時候會被計算在答案中.設一條邊u v權值為val,只會可能對u,v到 lca u,v 之間的點產生影響.記錄源點1到節點i的距離為dep i 那麼...

仙人掌最短路 BZOJ 2125 最短路

題解 首先如果這是一棵樹的話,那麼我們只需要選定乙個根,之後掃一遍這棵樹,詢問的話即是兩點到根節點的距離之和減去二倍的兩點lca到根節點距離。那麼如果是一棵仙人掌的話,我們強行套用這個辦法,重新構造一棵樹。對於仙人掌中的乙個環來說,我們把該環中深度最小的點當做這個環的根,然後環上其他點連向該環,非環...