【uva12232/hdu3461】带权并查集维护异或值
题意:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<ctime>
using namespace std; const int N=;
int n,m,fa[N],d[N],cnt[N],q[N];
char s[]; int findfa(int x)
{
if(fa[x]!=x)
{
int xx=fa[x];
fa[x]=findfa(fa[x]);
d[x]=d[x]^d[xx];
}
return fa[x];
} int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
char ch;
int x,y,k,p,xx,yy,val,ans,bk,ok,num,T=;
while()
{
scanf("%d%d",&n,&m);
if(!n && !m) break;
printf("Case %d:\n",++T);
memset(cnt,,sizeof(cnt));
for(int i=;i<=n;i++) fa[i]=i,d[i]=;
num=;bk=;
for(int i=;i<=m;i++)
{
scanf("%s",s);
if(s[]=='I')
{
num++;
scanf("%d%d%c",&x,&y,&ch);
if(ch==' ') scanf("%d",&val);
else val=y,y=n;
if(!bk) continue;
xx=findfa(x);yy=findfa(y);
if(xx!=yy)
{
if(xx==n) swap(x,y),swap(xx,yy);//debug
fa[xx]=y;
d[xx]=val^d[x];
}
else if((d[x]^d[y])!=val) {printf("The first %d facts are conflicting.\n",num);bk=;}
}
else
{
scanf("%d",&k);
for(int j=;j<=k;j++)
{
scanf("%d",&q[j]);
findfa(q[j]);
cnt[fa[q[j]]]++;
}
if(!bk) continue;
ans=;ok=;
for(int j=;j<=k;j++)
{
x=q[j];
if(fa[x]!=n && (cnt[fa[x]]&)) {printf("I don't know.\n");ok=;break;}
ans^=d[x];
}
for(int j=;j<=k;j++) cnt[fa[q[j]]]--;
if(ok) printf("%d\n",ans);
}
// printf("i = %d\n",i);
// for(int j=0;j<n;j++) printf("%d fa = %d d = %d\n",j,fa[j],d[j]);
// printf("\n");
}
printf("\n");
}
return ;
}
【uva12232/hdu3461】带权并查集维护异或值的更多相关文章
- 【POJ1182】 食物链 (带权并查集)
Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到 ...
- BZOJ 1202: [HNOI2005]狡猾的商人 [带权并查集]
题意: 给出m个区间和,询问是否有区间和和之前给出的矛盾 NOIp之前做过hdu3038..... 带权并查集维护到根的权值和,向左合并 #include <iostream> #incl ...
- BZOJ4025 二分图 分治 并查集 二分图 带权并查集按秩合并
原文链接http://www.cnblogs.com/zhouzhendong/p/8683831.html 题目传送门 - BZOJ4025 题意 有$n$个点,有$m$条边.有$T$个时间段.其中 ...
- BZOJ4602 Sdoi2016 齿轮 【带权并查集】*
BZOJ4602 Sdoi2016 齿轮 Description 现有一个传动系统,包含了N个组合齿轮和M个链条.每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x : y.即如果只考虑这两个组 ...
- HDU3047 Zjnu Stadium 【带权并查集】
HDU3047 Zjnu Stadium Problem Description In 12th Zhejiang College Students Games 2007, there was a n ...
- BZOJ 2303 方格染色(带权并查集)
要使得每个2*2的矩形有奇数个红色,如果我们把红色记为1,蓝色记为0,那么我们得到了这2*2的矩形里的数字异或和为1. 对于每个方格则有a(i,j)^a(i-1,j)^a(i,j-1)^a(i-1,j ...
- 【bzoj4500】矩阵 带权并查集
题目描述 有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作: 1. 选择一行, 该行每个格子的权值加1或减1. 2. 选择一列, 该列每个格子的权值加1或减1. 现在有K个限制,每 ...
- Poj1733 Parity Game(带权并查集)
题面 Poj 题解 反正只要你判断是否满足区间的奇偶性,假设每一位要么是\(1\)要么是\(0\)好了. 假设有\(S\)的前缀和为\(sum[]\),则有: 若\(S[l...r]\)中有奇数个\( ...
- 【带权并查集】【离散化】vijos P1112 小胖的奇偶
每个区间拆成r和l-1两个端点,若之内有偶数个1,则这两个端点对应的前缀的奇偶性必须相同,否则必须相反. 于是可以用带权并查集维护,每个结点储存其与其父节点的奇偶性是否相同,并且在路径压缩以及Unio ...
随机推荐
- aria2 on ubuntu
http://www.5yun.org/9102.html http://jpollo.logdown.com/posts/160847-aria2c-and-yaaw aria2c --enable ...
- ZOJ 1539 L-Lot
https://vjudge.net/contest/67836#problem/L Out of N soldiers, standing in one line, it is required t ...
- 【Linux】- CentOS 7 安装.NET Core 2.1
添加dotnet产品Feed 在安装.NET Core之前,您需要注册Microsoft产品Feed. 这只需要做一次. 首先,注册Microsoft签名密钥,然后添加Microsoft产品Feed. ...
- phpcms 模型
- Firefox火狐浏览器 修改默认搜索引擎
如图:
- Redis 学习之集群
该文使用centos6.5 64位 redis3.2.8 一. redis-cluster架构图 集群通信:所有redis节点之间通过PING-PONG机制彼此互联,内部使用二进制鞋子优化传输速度 ...
- [计算机网络-应用层] P2P应用
首先我们要先来区分一下下面的几种体系结构: CS:Client/Server 客户-服务器结构BS:Browser/Server 浏览器-服务器结构 P2P:Peer to Peer 对等结构 BS ...
- 第33天:封装自己的class类
封装自己的class类,实现浏览器兼容. <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- 网页添加提示音,用setInterval
如果一条数据通过审核了,修改数据库中一个值,用户怎么异步动态知道自己的记录通过审核了呢,我是通过音乐和提示的方式. 网页中添加如下代码: <style> #notify { positio ...
- BZOJ 1149 风铃(树形DP)
题目描述的实际是一颗二叉树,对于每个结点,要么满叉,要么无叉. 对于一种无解的简单情况,我们搜一遍树找到最浅的叶子结点1和最深的叶子结点2,如果dep[1]<dep[2]-1,则显然无解. 所以 ...