中心節點就是樹的中心,2遍dfs求到樹的直徑,而中心一定在直徑上,順著直徑找到中心就夠了。
然後可以一遍樹形dp找到最小值或者二分+判斷是否訪問到葉子節點。
#include #include#include#includeusing namespace std;
struct node
t;vectortree[10005];
int st,ed,maxs,n;
void dfs1(int now,int fa,int sum)
for(int i=0;imaxs)
for(int i=0;ilim)
}return true;
}int main()
else
}printf("%d\n",ans);
}return 0;}/*
71 2 8 2
1 3 2 2
3 6 4 0
2 4 3 0
2 5 10 0
5 7 12 0
*/
BZOJ3684 大朋友和多叉樹
我們的大朋友很喜歡電腦科學,而且尤其喜歡多叉樹。對於一棵帶有正整數點權的有根多叉樹,如果它滿足這樣的性質,我們的大朋友就會將其稱作神犇的 點權為1的結點是葉子結點 對於任一點權大於1的結點u,u的孩子數目deg u 屬於集合d,且u的點權等於這些孩子結點的點權之和。給出乙個整數s,你能求出根節點權值...
ZOJ 2112 線段樹套平衡樹
題目大意 給定乙個數列,定義兩種操作 1 修改第n個數的值 2 求 l,r 區間內第k大的值。方法 線段樹維護區間,treap樹維護第k大 splay當然也可以 樹套樹第一題。沒想到真的是每個線段樹上的節點建一棵平衡樹。然後修改值就是在所有相關區間內的平衡樹里,erase乙個值再insert乙個值。...
ZOJ 1610 思維 線段樹
zoj 1610 思維 include include using namespace std const int maxn 1e4 int n int e maxn 3 int color maxn int ans maxn int main for int i 1 i 8000 i 遍歷每乙個位...