http://www.lydsy.com/JudgeOnline/problem.php?id=3569 (题目链接)

题意

  给出一个无向图,$Q$组询问,每次询问将原图断掉$C$条边后是否还连通。在线版。

Solution

  神思路。

  我们找到这个图的任意一棵生成树,然后对于每条非树边将其的权值赋为一个随机数。

  对于每条树边,我们将这条树边的权值设为所有覆盖这条树边的边权的异或和。

  那么图不连通当且仅当删除一条树边和覆盖这条树边的所有边集,而由于刚才的处理一条树边和覆盖这条边的所有边集的异或和为零。

  于是问题转化成了对于给定的k条边是否存在一个边权的异或和为零的子集,果断高斯消元,由于使用了随机化所以碰撞率极低。

  ——PoPoQQQ

  好像就是tmp大爷上次说的方法,长见识了。

细节

  种子设大一点?(这不废话)

代码

// bzoj3569
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=500010;
int fa[maxn],fe[maxn],head[maxn],c[maxn],cnt,n,m,Q;
struct data {int u,v,w,tp;}d[maxn];
struct edge {int to,next,w;}e[maxn]; int find(int x) {
return fa[x]==x ? x : fa[x]=find(fa[x]);
}
void link(int u,int v,int w) {
e[++cnt]=(edge){v,head[u],w};head[u]=cnt;
e[++cnt]=(edge){u,head[v],w};head[v]=cnt;
}
void dfs(int x,int fa) {
for (int i=head[x];i;i=e[i].next) if (e[i].to!=fa) {
fe[e[i].to]=e[i].w;
dfs(e[i].to,x);
}
}
int Dfs(int x,int fa) {
int tmp=0;
for (int i=head[x];i;i=e[i].next) if (e[i].to!=fa) {
d[e[i].w].w^=Dfs(e[i].to,x);
tmp^=d[e[i].w].w;
}
return tmp;
}
int Gauss(int p) {
for (int now=0,i=1<<30;i;i>>=1) {
int k=now+1;
while (!(c[k]&i) && k<=p) k++;
if (k==p+1) continue;
swap(c[++now],c[k]);
for (int j=1;j<=p;j++) if (j!=now && c[j]&i) c[j]^=c[now];
}
return c[p] ? 1 : 0;
}
int main() {
srand(987532631);
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++) fa[i]=i;
for (int i=1;i<=m;i++) {
scanf("%d%d",&d[i].u,&d[i].v);
if (find(d[i].u)!=find(d[i].v)) {
fa[find(d[i].u)]=find(d[i].v),d[i].tp=1;
link(d[i].u,d[i].v,i);
}
}
dfs(1,0);
for (int i=1;i<=m;i++) if (!d[i].tp) {
d[i].w=rand();
d[fe[d[i].u]].w^=d[i].w;
d[fe[d[i].v]].w^=d[i].w;
}
Dfs(1,0);
scanf("%d",&Q);
for (int ans=0,i=1,k;i<=Q;i++) {
scanf("%d",&k);
for (int j=1;j<=k;j++) scanf("%d",&c[j]),c[j]^=ans;
for (int j=1;j<=k;j++) c[j]=d[c[j]].w;
int pd=Gauss(k);
ans+=pd;
puts(pd ? "Connected" : "Disconnected");
}
return 0;
}

【bzoj3569】 DZY Loves Chinese II的更多相关文章

  1. 【BZOJ3569】DZY Loves Chinese II

    [BZOJ3569]DZY Loves Chinese II 题面 bzoj 题目大意: 给你一张\(N(1\leq N\leq 10^5)\)个点\(M(1\leq M\leq 5\times 10 ...

  2. 【题解】DZY Loves Chinese

    [题解]DZY Loves Chinese II 不吐槽这题面了... 考虑如何维护图的连通性,如果把图的变成一颗的\(dfs\)生成树,那么如果把一个节点的父边和他接下来所有的返祖边删除,那么我们就 ...

  3. 【BZOJ3563/BZOJ3569】DZY Loves Chinese I/II(随机化,线性基)

    [BZOJ3563/BZOJ3569]DZY Loves Chinese I/II(随机化,线性基) 题面 搞笑版本 正经版本 题面请自行观赏 注意细节. 题解 搞笑版本真的是用来搞笑的 所以我们来讲 ...

  4. 【BZOJ3563/3569】DZY Loves Chinese II 线性基神题

    [BZOJ3563/3569]DZY Loves Chinese II Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以 ...

  5. 【BZOJ 3569】DZY Loves Chinese II 随机化+线性基

    用到一个结论——[先建树,再给每个非树边一个权值,每个树边的权值为覆盖他的非树边的权值的异或和,然后如果给出的边存在一个非空子集异或和为0则不连通,否则连通](必须保证每条边的出现和消失只能由自己产生 ...

  6. 【BZOJ 3569】DZY Loves Chinese II

    题面 Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图 ...

  7. 【BZOJ 3569】 DZY Loves Chinese II

    题目连接: 传送门 题解: 先%一发大佬的题解. 考虑一个图,删除一些边以后不连通的条件为,某个联通块与外界所有连边都被删掉,而不只是生成树中一个树边与所以覆盖它的非树边(很容易举出反例). 那么考虑 ...

  8. [BZOJ3569]DZY Loves Chinese II(随机化+线性基)

    3569: DZY Loves Chinese II Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1515  Solved: 569[Submit][S ...

  9. 【BZOJ3561】DZY Loves Math VI (数论)

    [BZOJ3561]DZY Loves Math VI (数论) 题面 BZOJ 题解 \[\begin{aligned} ans&=\sum_{i=1}^n\sum_{j=1}^m\sum_ ...

随机推荐

  1. sql语句之表间字段值复制遇到的一些问题--基于mysql

    好久没来园子了,转眼2017已经到3月份了,前段时间一直忙没时间写博客(其实是自己懒),感觉内心好惭愧.昨天临下班前,技术老大突然对我说要改下表结构,问我能不能实现将一个表的字段值复制到另外一个表的某 ...

  2. 64位RHEL5系统上运行yum出现"This system is not registered with RHN”的解决方法

    在红帽EL5上运行yum,提示“This system is not registered with RHN”,意思是没有在官网上注册,不能下载RH的软件包,替代方案是采用centos源. 1.卸载r ...

  3. 20155204《网络对抗》Exp9 Web安全基础实践

    20155204<网络对抗>Exp9 Web安全基础实践 一.基础问题回答 SQL注入攻击原理,如何防御? 原理: SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以 ...

  4. 20155323刘威良《网络对抗》Exp9 Web安全基础

    20155323刘威良<网络对抗>Exp9 Web安全基础 实践目的 理解常用网络攻击技术的基本原理. 实践内容 Webgoat实践下相关实验. 实践过程 开启WebGoat WebGoa ...

  5. HTML基础之DOM操作

    DOM(Document Object Model 文档对象模型) 一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象.可以通过dom对象中j ...

  6. 洛咕 P4474 王者之剑

    宝石只能在偶数秒取到,假设有一个宝石在奇数秒取到了,那么上一秒是偶数秒,在上一秒的时候这里的宝石就没了. 相邻的两个宝石不能同时取,很显然,先取一块,那么这是偶数秒,取完了这一块之后相邻的都没了. 只 ...

  7. Java虚拟机笔记(五):JVM中对象的分代

    为什么要分代 为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用, ...

  8. shellcode 编码技术

    在很多漏洞利用场景中, shellcode 的内容将会受到限制. 例如你不能输入 \x00 这个字符,编辑框不能输入 \x0d \x0a这样的字符 所以需要完成 shellcode 的逻辑,然后使用编 ...

  9. 如何基于 K8S 多租能力构建 Serverless Container

    当前 Kubernetes 已经成为名副其实的企业级容器编排规范,很多云平台都开始提供兼容 Kubernetes 接口的容器服务.而在多用户支持方面,多数平台选择直接提供专属虚机集群,用户需要花费大量 ...

  10. hive insert 动态分区异常(Error encountered near token)与解决

    当insert数据到有分区的hive表里时若不明显指定分区会抛出异常 insert overwrite table persons_tmp select * from persons; FAILED: ...