插排樹時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 32768k,其他語言65536k
64bit io format: %lld
一年一度的山東省oi夏令營又開始了,每到這個季節,山東的oier們都會歡聚這裡,一起學(tuí)習(feì)。當然,為了能更加愉快地學(tuí)習(feì),就少不了要自帶電腦,用電便開始成了一種問題,於是便有一種神奇的資料結構誕生了!這就是山東省oi專用資料結構——插排樹(如圖)
小k為了能更好的學(tuí)習(feì),所以他想盡量的往後做,所以現在請你幫幫他,他最遠可以離講台多遠。
已知插排樹的根節點在講台上,有且僅有乙個根節點(根節點入度為0),最遠距離即所有插排的長度,小k電腦線的長度忽略不計
第一行乙個整數n表示有n個節點
然後n-1行,每行三個整數a,b,c,表示插排a是接在插排b上的,插排a的長度為c
乙個整數n表示最遠距離
示例1
複製
9
2 1 2
3 1 2
4 1 1
5 2 3
6 2 1
7 3 1
8 3 4
9 7 5
複製
8
1=>3=>7=>9
對於30%的資料 n<233
對於70%的資料 n<2333
對於100%的資料 n<50000
c小於20
a,b小於等於n
最長路**如下
#include #include #include #include #include #include #define maxn 500005
typedef long long ll;
using namespace std;
ll n,m,k,cnt;
ll head[maxn];
ll rec[maxn],ma;
ll flag[maxn] = ;
struct edge
plan[maxn];
struct node
bool operator < (const node nod) const
};void bulid(ll b,ll a,ll c)
void bfs(ll be)}}
}setkb;
int main()
for(int i = 1; i <= n-1; i ++)
bfs(*kb.begin());
cout << ma << endl;
return 0;
}
牛客練習賽24 D
名字挺有意思的,排插樹,雖然這是個圖。算dijkstra的模版題,求最短路裡面最長的那條,因為到講台的距離總是取決於最短的那條路,但是又要求離講台最遠,那麼我們通過dijkstra計算出起始點到所有點的最短路然後遍歷找最大值就好。如下 include using namespace std type...
牛客練習賽24 E 青蛙(最短路)
有乙隻可愛的老青蛙,在路的另一端發現了乙個黑的東西,想過去一 竟。於是便開始踏上了旅途 一直這個小路上有很多的隧道,從隧道的a進入,會從b出來,但是隧道不可以反向走。這只青蛙因為太老了,所以很懶,現在想請你幫幫慢,問他最少需要幾步才可以到達對面。將小徑看作一條數軸,青蛙初始在0上,這只青蛙可以向前跳...
牛客練習賽17 A E 最短路 列舉
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 題目描述 給出共享長方體乙個頂點的三個面的面積,求它十二條邊的邊長和。輸入描述 一行三個整數a,b,c表示面積 1 a,b,c 10000 輸出描述 一行乙個整數表示邊...