描述為了拯救喵哈哈村,這個世界必須要存在英雄。
一名叫做盧西奧的英雄站了出來!他現在面臨乙個難題:
他被要求將一棵樹拆成3份,使得每乙份中所有節點的權值和相等。
他希望知道,對於一棵給定的有根樹,在選取其中2個非根節點並將它們與它們的父親節點分開後,所形成的三棵子樹的節點權值之和能夠兩兩相等的方案有多少種。
兩種方案被看做不同的方案,當且僅當形成方案的2個節點不完全相同。
輸入每個輸入檔案包含多組輸入,在輸入的第一行為乙個整數t,表示資料的組數。
每組輸入的第一行為乙個整數n,表示給出的這棵樹的節點數。
接下來n行,依次描述結點1~n,其中第i行為兩個整數vi和pi,分別描述這個節點的權值和其父親節點的編號。
父親節點編號為0的節點為這棵樹的根節點。
滿足3<=n<=100000, |vi|<=100, t<=10
輸出對於每組輸入,輸出一行ans,表示方案的數量。
樣例輸入1
複製
231 0
1 11 2
41 0
1 11 2
1 3
樣例輸出1
10
一開始沒有看到v可以取負數,gg
分成三顆子樹滿足條件,這兩個節點在同乙個根節點上,或者不在同乙個根節點上。。。注意累加方案有技巧
#include #include #include #include #include #include #include using namespace std;
typedef long long ll;
const int n = 1100000;
int v[n], sum[n], f[n];
vectorp[n];
ll ans, t1, t2, s;
void get(int u)
{ sum[u]=v[u];
for(int i=0;i
qscoj 喵哈哈村的盧西奧
描述為了拯救喵哈哈村,這個世界必須要存在英雄。一名叫做盧西奧的英雄站了出來!他現在面臨乙個難題 他被要求將一棵樹拆成3份,使得每乙份中所有節點的權值和相等。他希望知道,對於一棵給定的有根樹,在選取其中2個非根節點並將它們與它們的父親節點分開後,所形成的三棵子樹的節點權值之和能夠兩兩相等的方案有多少種...
喵哈哈村的盧西奧
描述 為了拯救喵哈哈村,這個世界必須要存在英雄。一名叫做盧西奧的英雄站了出來!他現在面臨乙個難題 他被要求將一棵樹拆成3份,使得每乙份中所有節點的權值和相等。他希望知道,對於一棵給定的有根樹,在選取其中2個非根節點並將它們與它們的父親節點分開後,所形成的三棵子樹的節點權值之和能夠兩兩相等的方案有多少...
qscoj 喵哈哈村的狼人殺大戰 5
描述喵哈哈村最近熱衷於玩乙個叫做狼人殺的遊戲!沈寶寶同學今天他抽到的是狼人的身份,按照他的一貫玩法,他喜歡一開始就自爆,讓大家都不能說話,可謂心狠手辣。於是他早早的就出去了。但是他現在很無聊,於是他出了一道題給自己玩。如果乙個數的二進位制表示中有k個1的話,那麼這個就是就是k th數。比如有10 1...