【牛客小白月赛42】F火凤燎原
「蒲公英」是树上的一个连通子集,有且仅有一个「中心点」,另外:
设「中心点」在原树中的度为 k≥3,则必须有k-1个结点在「蒲公英」中是一个单点,剩下一条链;那条链的本身长度(不包含u)必须不少于2。
两个「蒲公英」本质不同,当且仅当中心点 u 不同或对应的链包含的结点不同。(至少存在一个结点 v 属于一个「蒲公英」而不属于另一个「蒲公英」)
给定一棵无根树,求其中「蒲公英」的个数。
。。。。
这。。。读清题目就能ak了啊。。。
和u相连的k个点都要选,而且只能有一个链,以u为中心的答案当然就是n-1-du。。。
#include <iostream>
#include <cstring>
using namespace std;
const int maxn = 2e6 + 10;
int d[maxn];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int T, n, x;
cin >> T;
while (T--) {
cin >> n;
memset(d, 0, sizeof(int) * (n + 1));
for (int i = 1; i <= 2 * (n - 1); i++) {
cin >> x;
d[x]++;
}
long long ans = 0;
for (int i = 1; i <= n; i++)
if (d[i] >= 3) ans += n - d[i] - 1;
cout << ans << endl;
}
return 0;
}