科學家在觀測一棵大樹,這棵樹在不斷地生長,科學家給這棵樹的每個節點編了號。開始的時候,這棵樹很小只有4個節點,一號點為根,其他三個節點掛在上面。
在接下來的m次觀察中,科學家每次都能看見這棵樹從葉子處長出新的兩個節點來。如果當前這棵樹有n個節點,那麼這棵樹的新的兩個節點的編號分別為n+1,n+2。科學家記錄下了這棵樹生長的過程,需要你幫著計算這棵樹實時的直徑。樹的直徑就是這棵樹最遠的兩個節點的距離。
每行乙個整數x,代表這棵樹的編號為x的節點下面又長了兩個葉子節點。保證每次生長的節點都是葉子節點
好久沒在jzoj上切題了,估計ranking都要掉了趕緊做一做今天的模擬題
還好第一題還比較簡單,直接將新建節點和原來直徑合併就好了,求lca就用倍增ok
#pragma gcc opitmize("o3")
#pragma g++ opitmize("o3")
#include
#include
#include
using
namespace
std;
int f[200010][18],d[200010],n;
inline
void link(int p,int x)
inline
void swim(int& x,int d)
inline
int glca(int x,int y)
}int main()
p=glca(y,t);
if(d[y]+d[t]-2*d[p]>r)
printf("%d\n",r);
}}
jzoj3555 樹的直徑
科學家在觀測一棵大樹,這棵樹在不斷地生長,科學家給這棵樹的每個節點編了號。開始的時候,這棵樹很小只有4個節點,一號點為根,其他三個節點掛在上面。在接下來的m次觀察中,科學家每次都能看見這棵樹從葉子處長出新的兩個節點來。如果當前這棵樹有n個節點,那麼這棵樹的新的兩個節點的編號分別為n 1,n 2。科學...
SDOI2013 直徑(樹的直徑)
小q最近學習了一些圖論知識。根據課本,有如下定義。樹 無迴路且連通的無向圖,每條邊都有正整數的權值來表示其長度。如果一棵樹有n個節點,可以證明其有且僅有n 1 條邊。路徑 一棵樹上,任意兩個節點之間最多有一條簡單路徑。我們用 dis a,b 表示點a和點b的路徑上各邊長度之和。稱dis a,b 為a...
JZOJ5465 道路重建 邊雙縮點 樹的直徑
lueluelue 這鬼題卡了我10發提交,之前做過一道類似的題目 題解p2860 usaco冗雜路徑 縮點 橋 危險的邊就是橋邊,tarjan求出邊雙后縮點整個圖變成樹,樹邊都是危險的邊,我們需要加一條邊構成乙個新的ecc使危險的邊最小 於是一開始naiive的以為求出所有葉子節點判一判就好了,於...