【牛客小白月赛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;
}
posted @ 2021-12-17 21:57  _vv123  阅读(51)  评论(0编辑  收藏  举报