BZOJ1641Cow Hurdles 奶牛跨欄

2021-07-10 17:01:36 字數 1399 閱讀 4176

1641: [usaco2007 nov]cow hurdles 奶牛跨欄

time limit: 5 sec memory limit: 64 mb

submit: 511 solved: 336

description

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,使路徑上最高的欄的高度最小。 你的任務就是寫乙個程式,計算出路徑上最高的欄的高度的最小值。

input

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

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

output

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

sample input

5 6 3

1 2 12

3 2 8

1 3 5

2 5 3

3 4 4

2 4 8

3 4

1 2

5 1

sample output

4 8

-1 source

silver

n的範圍很小,又是多源最短路,直接floyed即可。。

附上本蒟蒻的**:

#include

#include

#include

using namespace std;

#define inf 1000000000

int n,m,q,dis[301][301];

intread()

while (ch>='0' && ch<='9')

w=w*10+ch-'0',ch=getchar();

return w*c;

}void floyed()

int main()

return

0;}

bzoj1641 奶牛跨欄 最短路

farmer john 想讓她的奶牛準備郡級跳躍比賽,貝茜和她的夥伴們正在練習跨欄。她們很累,所以她們想消耗最少的能量來跨欄。顯然,對於一頭奶牛跳過幾個矮欄是很容易的,但是高欄卻很難。於是,奶牛們總是關心路徑上最高的欄的高度。奶牛的訓練場中有 n 1 n 300 個站台,分別標記為1.n。所有站台之...

BZOJ4264 小C找朋友

description 幼兒園裡有n個小c,兩個小c之間可能是朋友也可能不是。所有小c之間的朋友關係構成了乙個無向圖,這個無向圖中有m條邊。園長atm發現對於兩個 不同的 小ci和j,如果其他的所有小c要麼同時是i,j的朋友,要麼同時不是i,j朋友的話,這兩個小c就很有可能一起去吃飯,成為一對好友。...

bzoj4264 小C找朋友

怎麼說呢,這應該算是一種新知識吧,圖上hash。具體做法就是每個點都附上乙個初值,然後把每個點所連的點的值 合 起來,然後就可以判斷相連的點是否一樣了 不包括自己 如果要讓自己也在的話,再 合 上自己就好了。關於怎麼 合 有多種方法,感覺一般採用二進位制運算,因為不用考慮順序呀。好像異或的正確率比較...