#include<bits/stdc++.h>
using namespace std;
int f[200010];//代表元
long long rl[200010];//记rl[i]为结点i到根的路径上所有边的亦或和(这里可以忽视 x(0)的情况)
void init(int n)
{
    for(int i=1;i<=n;i++)
        f[i]=i,rl[i]=0;//初始化
}
int fd(int x)//并查集模板
{
    if(f[x]==x)
        return x;
    int fa=f[x];
    f[x]=fd(f[x]);
    rl[x]=rl[x]^rl[fa];//由于x更换了代表元,换的路径要算上
    return f[x];
}
int join(int x,int y,long long val)
{
    int fx=fd(x),fy=fd(y);
    if(fx==fy)
        return 0;
    f[fx]=fy;
    rl[fx]=rl[fx]^rl[x]^rl[y]^val;//同一个集合(代表元为 c)
//内两个元素 a 和 b 的亦或值为 x(a) xor x(b) = (x(a) xor x(c)) xor (x(b) xor x(c))。
    return 1;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,c;
        scanf("%d%d",&n,&c);
        int x,y;
        for(int i=1;i<n;i++)
            scanf("%d%d",&x,&y);
        init(n);
        int xx,yy;
        long long val;
        int ans=c;
        for(int i=1;i<=c;i++)
        {
            scanf("%d%d%lld",&xx,&yy,&val);
            if(ans!=c)
                continue;
            if(!join(xx,yy,val)&&(rl[xx]^rl[yy])!=val)//当某一条信息中两点xx与yy在同一连通块上,
            //那么就必须满足xx与yy各自代表元异或的值等于val,否则就停止,只能满足之前的要求数量。
                ans=i-1;
        }
        printf("%d\n",ans);
    }
    return 0;
}
//带权并查集可以考虑模板,根据实际问题修改里面的变量

转载于:https://www.cnblogs.com/ldudxy/p/9519979.html

2017乌鲁木齐区域赛I(带权并查集)相关推荐

  1. 2017 西安网络赛A Tree(树上静态查询,带权并查集,矩阵乘法压位,好题)

    题目链接 题意: 给出 \(n(n \leq 3000)\) 个结点的一棵树,树上每个结点有一个 \(64 \times 64\) 的 \(0,1\)矩阵,每个结点上的矩阵是根据输入的 \(seed\ ...

  2. 2017乌鲁木齐ICPC: I. A Possible Tree(带权并查集)

    I. A Possible Tree Alice knows that Bob has a secret tree (in terms of graph theory) with n nodes wi ...

  3. POJ1988(带权并查集,搬砖块)

    题意:        可以这样理解,有n快方形积木,一开始都是单独的放到哪,然后有两种操作 1 M a b 把a所在的那一堆落到b所在那一堆的上面(一开始自己是一堆) 2 C a 问a下面有多少个积木 ...

  4. BZOJ 2303 方格染色(带权并查集)

    要使得每个2*2的矩形有奇数个红色,如果我们把红色记为1,蓝色记为0,那么我们得到了这2*2的矩形里的数字异或和为1. 对于每个方格则有a(i,j)^a(i-1,j)^a(i,j-1)^a(i-1,j ...

  5. POJ1703带权并查集(距离或者异或)

    题意:       有两个黑社会帮派,有n个人,他们肯定属于两个帮派中的一个,然后有两种操作 1 D a b 给出a b 两个人不属于同一个帮派 2 A a b 问a b 两个人关系 输出 同一个帮派 ...

  6. LA3027简单带权并查集

    题意:       有n个点,一开始大家都是独立的点,然后给出一些关系,a,b表示a是b的父亲节点,距离是abs(a-b)%1000,然后有一些询问,每次询问一个节点a到父亲节点的距离是多少? 思路: ...

  7. hdu3234 带权并查集(XOR)

    题意:       给你n个未知的正整数,有三总操作       I P V            P的值是V       I P Q V          P XOR Q = V       Q K ...

  8. hdu4829 带权并查集(题目不错)

    题意: Information Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  9. poj1182 and 携程预赛2第一题 带权并查集

    题意:       动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.  现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底 ...

最新文章

  1. 无限极:对虚假宣传行为查处不力 推十条整改措施
  2. 诺基亚 IoT安全白皮书
  3. Spark SQL玩起来
  4. Python教程:迭代器的正确使用方法
  5. 值得关注的医疗 AI 公司(待续)
  6. 百度链接解析_【集合】百度分享链接解析的方法总结
  7. mysql 输出参数 sql语句_MySQL: 详细的sql语句
  8. ajax回显500因为#与$的原因
  9. c语言中未声明的标识符要怎么办,vc ++未声明的标识符,虽然它已声明
  10. nmap扫描ipv6端口_web渗透测试系列 之 扫描(3)
  11. 不同地址访问mysql_应用服务器如何访问位于多个不同的私网内,但是私网 IP 地址是一样的数据库服务器?...
  12. 软件详细设计的几个参考模板
  13. mysql 前几个月的时间_MYsql 查询 查询当前周、月份及前几个月的数据(时间 查询)...
  14. 第二型曲线和曲面积分总结
  15. 独家:海尔消金“重仓”医美,月放款量惊人
  16. 字符串相乘——大整数乘法
  17. 广域网 —— HDLC协议
  18. java生成word文档 图片_java生成带有图片的word的文档-Go语言中文社区
  19. 用JavaScript canvas做的走迷宫游戏,肝了一下午,请帮忙点个赞!
  20. 2021 ICPC Southeastern Europe Regional Contest 树上dfs+思维

热门文章

  1. C++ unique
  2. Delphi与Ole,Word,Excel,查找与替换等
  3. Java基础笔记17
  4. 持续集成篇-- SonarQube代码质量管理平台的安装
  5. LeetCode Weekly Contest 27
  6. 少女时代成为主流:这是一件好事吗?
  7. C#操作xml文件入门
  8. spring 声明式事务
  9. 中国民航局:2019年春运中国民航旅客运输量将创历史新高
  10. windows系统中的常用网络命令