loj#6157 A ^ B Problem
分析
用并查集维护
每次一个连通块的每个点记录它到当前连通块的根的异或值
对于不符合的情况容易判断
最后判断是否都在一个连通块内然后记录答案即可
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,a[],b[],fa[],w[];
inline int sf(int x){if(fa[x]==x)return x;int f=sf(fa[x]);w[x]^=w[fa[x]];return fa[x]=f;}
int main(){
int i,j,k,t,ok;
scanf("%d",&t);
while(t--){
int mn=1e9+,mx=;
ok=;scanf("%d%d",&n,&m);
for(i=;i<=n;i++)fa[i]=i,w[i]=;
for(i=;i<n;i++)scanf("%d%d",&a[i],&b[i]);
for(i=;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
int xx=sf(x),yy=sf(y);
if(xx==yy){
if((w[x]^w[y])!=z)ok=;
}else {
fa[xx]=yy;
w[xx]=(w[x]^w[y]^z);
}
}
if(!ok)puts("Impossible");
else {
for(i=;i<n;i++){
if(sf(a[i])!=sf(b[i])){
ok=;
puts("No");
break;
}
mn=min(mn,(w[a[i]]^w[b[i]]));
mx=max(mx,(w[a[i]]^w[b[i]]));
}
if(ok)printf("%d %d\n",mn,mx);
}
}
return ;
}
loj#6157 A ^ B Problem的更多相关文章
- LOJ [#115. 无源汇有上下界可行流](https://loj.ac/problem/115)
#115. 无源汇有上下界可行流 先扔个板子,上下界的东西一点点搞,写在奇怪的合集里面 Code: #include <cstdio> #include <cstring> # ...
- loj6157 A^B Problem (并查集)
题目: https://loj.ac/problem/6157 分析: 这种树上异或,一般是采用分位考虑,但是这题即使分位,也会发现非常不好处理 这里考虑维护一个点到其根的路径的异或值 用并查集去检测 ...
- LOJ子序列
题目描述 https://loj.ac/problem/6074 题解 对于子序列的dp,我们可以设置一个dp. 我们设dp[i]表示以i这个字符结尾的子序列个数,转移为dp[i]+=∑dp[k]-d ...
- Loj #528. 「LibreOJ β Round #4」求和 (莫比乌斯反演)
题目链接:https://loj.ac/problem/528 题目:给定两个正整数N,M,你需要计算ΣΣu(gcd(i,j))^2 mod 998244353 ,其中i属于[1,N],j属于[1,M ...
- Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)
题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...
- loj 6008 餐巾计划 - 费用流
题目传送门 传送门 题目大意 (经典题还不知道题意?) 容易想到需要把未使用的餐巾和已经使用的餐巾分开. 设$X_i$表示第$i$天已经的使用餐巾的点,设$Y_i$表示第$i$天还未使用的餐巾的点 我 ...
- loj 6037 「雅礼集训 2017 Day4」猜数列 - 动态规划
题目传送门 传送门 题目大意 有一个位置数列,给定$n$条线索,每条线索从某一个位置开始,一直向左或者向右走,每遇到一个还没有在线索中出现的数就将它加入线索,问最小的可能的数列长度. 依次从左到右考虑 ...
- loj #6.Guess Number
原题链接:https://loj.ac/problem/6 Guess Number 内存限制:256 MiB 时间限制:1000 ms 题目类型:交互 题目描述 这是一个交互题的模板. 系统会随机生 ...
- LOJ 3089 「BJOI2019」奥术神杖——AC自动机DP+0/1分数规划
题目:https://loj.ac/problem/3089 没想到把根号之类的求对数变成算数平均值.写了个只能得15分的暴力. #include<cstdio> #include< ...
随机推荐
- bfs(同一最短路径)
http://oj.jxust.edu.cn/contest/Problem?id=1702&pid=7 题意:现在有两个相同大小的地图,左上角为起点,右下角问终点.问是否存在同一条最短路径. ...
- Java中的sort
Java中对集合排序有两种方式 Comparable和Comparator public static <T> void sort(List<T> list); 将集合中的数据 ...
- windows 桌面背景设置实例
应用SystemParametersInfo函数可以获取和设置数量众多的windows系统参数.这个小程序就是运用了SystemParametersInfo函数来设置桌面的墙纸背景,而且程序可以让我们 ...
- gorpeln的个人博客 - gorpeln
2019-10-18 App Store 审核指南 2019-10-03 锚点跳转距离顶部指定距离 2019-09-23 Jekyll 简单加密 (pwd=123456) 2019- ...
- 时间戳转换日期格式 - Vue
日常开发中经常会遇到时间相关的问题,服务端返回的数据都是以时间戳的方式,那么需要将其处理转化为对应的时间格式,具体方式如下: 一.filters 中 formatDate 方法实现 <scrip ...
- linux MySql 在 Master 主从复制配置
在 Master 服务器上建立用于 Slave 服务器复制数据的帐户 [root@master ~]# mysql mysql> grant replication slave,replicat ...
- Python字符串(str)方法调用
# str# n = 'pianYU'# v = n.capitalize() # 将字符串的首字母大写# print(v)## n = 'pianYI'# v1 = n.isupper() # 判断 ...
- python数字图像处理(二)关键镜头检测
镜头边界检测技术简述 介绍 作为视频最基本的单元帧(Frame),它的本质其实就是图片,一系列帧通过某种顺序组成在一起就构成了视频.镜头边界是视频相邻两帧出现了某种意义的变化,即镜头边界反映了视频内容 ...
- jenkins上job误删除怎么恢复
1.点击jobConfigHistory 2.点击Show deleted jobs only 3.找到被删除的 记录,点击Restore
- 六、ARM 寻址方式
寻址方式是针对源操作数来说的 6.1 立即数寻址 源操作数是立即数 立即数:操作码以 # 号开头的数字为立即数 立即数寻址: MOV R0, #0x300 伪指令: LDR R0 ...