BZOJ 3569: DZY Loves Chinese II(线性基)
##解题思路
首先构造出一个生成树,考虑不连接的情况。假设连通两点的非树边和树边都断掉后不连通,那么可以给所有的非树边随机一个互不相同的值,然后树边的权值为过他两端点的非树边权值的异或和,这个可以用一个类似树上差分的东西来实现。询问的时候把所有询问的边权加到线性基里,看是否某个数字能被线性表出。
##代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<set>
using namespace std;
const int N=100005;
const int M=500005;
const int INF=(1<<30);
inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) f=ch=='-'?0:1,ch=getchar();
while(isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
return f?x:-x;
}
int n,m,head[N],cnt,to[N<<1],nxt[N<<1],Q,b[35],F[N];
int tag[N],tot,id[N<<1],ans;
bool flag;
set<int> S;
struct Edge{
int u,v,w;
}edge[M];
inline void add(int bg,int ed,int Id){
to[++cnt]=ed,nxt[cnt]=head[bg],id[cnt]=Id,head[bg]=cnt;
}
int get(int x){
if(x==F[x]) return x;
return F[x]=get(F[x]);
}
void dfs(int x,int fa){
for(int i=head[x];i;i=nxt[i]){
int u=to[i]; if(u==fa) continue;
dfs(u,x);
edge[id[i]].w^=tag[u];
tag[x]^=tag[u];
}
}
inline void init(){
memset(b,0,sizeof(b));
flag=false;
}
inline void Insert(int x){
for(int i=30;~i;i--)
if(x&(1<<i)){
if(!b[i]) {b[i]=x; return ;}
x^=b[i];
}
if(!x) flag=1;
}
int main(){
srand(time(0)); srand(rand()); srand(20020426);
n=rd(),m=rd();int x,y;
for(int i=1;i<=n;i++) F[i]=i;
for(int i=1;i<=m;i++)
edge[i].u=rd(),edge[i].v=rd();
for(int i=1;i<=m;i++){
x=get(edge[i].u); y=get(edge[i].v);
if(x==y) {
edge[i].w=rand()%INF;
while(S.find(edge[i].w)!=S.end()) edge[i].w=rand()%INF;
S.insert(edge[i].w);
tag[edge[i].u]^=edge[i].w;
tag[edge[i].v]^=edge[i].w;
continue;
}
add(edge[i].u,edge[i].v,i); add(edge[i].v,edge[i].u,i);
F[x]=y; tot++;
}
dfs(1,0); Q=rd();
while(Q--){
init();
for(x=rd();x;x--) y=(rd()^ans),Insert(edge[y].w);
if(flag) puts("Disconnected");
else puts("Connected"),ans++;
}
return 0;
}
BZOJ 3569: DZY Loves Chinese II(线性基)的更多相关文章
- BZOJ 3569 DZY Loves Chinese II ——线性基
[题目分析] 腊鸡题目卡题面. 大概的意思就是给一张无向图,每次删掉其中一些边,问是否联通. 首先想到的是Bitset,可以做到n^2/64.显然过不了. 然而这是lyd在给我们讲线性基的时候的一道题 ...
- 【BZOJ3563/3569】DZY Loves Chinese II 线性基神题
[BZOJ3563/3569]DZY Loves Chinese II Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以 ...
- BZOJ 3569 DZY Loves Chinese II 树上差分+线性基
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3569 Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅 ...
- BZOJ 3569: DZY Loves Chinese II [高斯消元XOR 神题]
http://www.lydsy.com/JudgeOnline/problem.php?id=3569 题意:多次询问一个无向连通图当图中某k条边消失时这个图是否联通 强制在线 太神啦啦啦啦啦啦啦啦 ...
- BZOJ3569:DZY Loves Chinese II(线性基)
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图, ...
- BZOJ 3569 DZY Loves Chinese II
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上 ...
- BZOJ3569: DZY Loves Chinese II(线性基构造)
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图, ...
- bzoj 3569 DZY Loves Chinese II 随机算法 树上倍增
题意:给你一个n个点m条边的图,有若干组询问,每次询问会选择图中的一些边删除,删除之后问此图是否联通?询问之间相互独立.此题强制在线. 思路:首先对于这张图随便求一颗生成树,对于每一条非树边,随机一个 ...
- BZOJ 3563 DZY Loves Chinese
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上 ...
随机推荐
- c# 如何获取系统管理员权限(UAC) 及判断当前是否是管理员权限
环境说明: VS2012,windows 7 亲自验证过win7 和xp ,XP直接不弹框,因为XP没有UAC控制机制 步骤1: 右键项目-->属性-->安全性-->选中[启用Cl ...
- mysql8.0.15出错
昨天装了一个wireshark,一个fiddler,导致晚上项目启动一直报init database出错,卸载了两个软件,还是不行,后来一看mysql服务停止了,但启动总是失败.按照网上的方法好了. ...
- python练习题之随机生成验证码
#引用random模块下的randint项目#定义验证码函数.定义一个空字符串变量,分三种情况,随机产生的大写字母,随机产生的小写字母,随机产生的数字.然后#每一次执行哪一种情况,条件也是随机的,就是 ...
- 查找android so文件中绕过c/c++ api直接调用SYSCALL的方法位置
很多应用会通过arm汇编,自行调用syscall,直接操作系统内核,来绕过c层的hook,保证程序安全 所以想hook的话只能找到这些方法的c入口分别hook 可以通过查找bxls指令找到这些位置
- java String 类特点
String的设计是一个典型的单一模式 String str1="AAAA":String str2="AAAA": 这生成两个对象吗?不是.在内存中,这是同一 ...
- git---从已有分支拉出新分支
文章目录 开发中,经常需要从一个已有的分支拉出一个新分支,去这个新分支做一些开发改动,这里示例为: 从master分支,重新拉取出一个新的分支,名字为dev,具体命令如下: 切换到被copy的分支(m ...
- Linux(Ubuntu)常用命令(四)
权限修改: 先知: u user 表示该文件的所有者 g group 表示与该文件的所有者属于同一组( group )者,即用户组 o other 表示其他以外的人 a all 表示这三者皆是 r r ...
- QTP使用dictionary 对象
1. 创建即使用Dictionary对象 ' 创建Dictionary对象Set Dic = CreateObject("Scripting.Dictionary")' 添加Dic ...
- 希尔排序(shell)理论---不含源码
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 希尔排序,是一个缩小增量排序.它根据步长来进行排序,步长不同可能会产生不同的序列,但是他们的最终结果是相同的,希尔排序的官方理论难以理解, ...
- exsi 回收虚拟机磁盘
用客户端登陆服务端,用下面命令停止虚拟机机器 esxcli vm process list 用如下命令关闭一台虚拟机: esxcli vm process kill --type=[soft,h ...