HDU 5606 tree

来源:互联网 发布:邮箱验证正则表达式 js 编辑:程序博客网 时间:2024/06/08 11:31

一道并查集,去掉权值为1的边,问联通块中点的个数

#include <cstdio>const int MAXN = 100005;int fa[MAXN], num[MAXN];int find(int n){    if(fa[n] != n)        fa[n] = find(fa[n]);    return fa[n];}int main(){    int T;    scanf("%d", &T);    while(T--)    {        int n, a, b, v;        scanf("%d", &n);        for(int i = 1; i <= n; i++)            fa[i] = i, num[i] = 1;        for(int i = 1; i < n; i++)        {            scanf("%d%d%d", &a, &b, &v);            if(v == 1) continue;            int x = find(a), y = find(b);            if(x != y)                fa[x] = y, num[y] += num[x];        }        int ans = 0;        for(int i = 1; i <= n; i++)            ans ^= num[find(i)];        printf("%d\n", ans);    }    return 0;}


0 0
原创粉丝点击