给一个无向连通图,多次询问,每次询问给 k 条边,问删除这 k 条边后图的连通性,对于 bzoj3237 可以离线,对于 bzoj3569 强制在线

$n,m,q \leq 500000,k \leq 15$

sol:

离线的话很好做,xjb 分治就行了,大概就是 bzoj4025 二分图那题改一改,用一个带权并查集维护连通块大小,当然删除时间最大生成树也是可以做的

在线的话,我们需要一些神仙操作

首先,随便搞出这个图的一棵生成树,对于每个非树边,我们给它随机一个权值

然后对于每条树边,我们让它的权值为覆盖它的所有非树边异或和

我们发现图不连通当且仅当一条树边和所有覆盖它的非树边都被删除

因为树边权值 xor 所有覆盖它的非树边权值异或和 = 0

于是问题变成了:“给你一个边集,判断是否有一个子集异或和为 0 ”

这个就要用到线性基的那一套理论

我们知道求线性基的时候可以求出一组极大线性无关集

看这个线性无关集大小是否为 k 即可

求线性基可以高斯消元

#include<bits/stdc++.h>
#define LL long long
using namespace std;
inline int read()
{
int x = ,f = ;char ch = getchar();
for(;!isdigit(ch);ch = getchar())if(ch == '-') f = -f;
for(;isdigit(ch);ch = getchar())x = * x + ch - '';
return x * f;
}
const int maxn = ;
int n,m;
int first[maxn],to[maxn << ],nx[maxn << ],val[maxn << ],cnt = ;
inline void add(int u,int v)
{
to[++cnt] = v;
nx[cnt] = first[u];
first[u] = cnt;
}
inline void ins(int u,int v){add(u,v);add(v,u);}
int bin[],vis[maxn],v[maxn];
int lastans,a[];
inline void maketree(int x,int fa)
{
vis[x] = ;
for(int i=first[x];i;i=nx[i])
{
if(to[i] == fa)continue;
if(!vis[to[i]])maketree(to[i],x);
else if(!val[i >> ])
{
val[i >> ] = rand();
v[x] ^= val[i >> ];
v[to[i]] ^= val[i >> ];
}
}
}
inline void dfs(int x)
{
vis[x] = ;
for(int i=first[x];i;i=nx[i])
{
if(vis[to[i]])continue;
dfs(to[i]);v[x] ^= v[to[i]];
val[i >> ] = v[to[i]];
}
}
int Gauss_Jordan(int n)
{
int now = ;
for(int i=;i>=;i--)
{
int j = now;
while(j <= n &&!(a[j] & ( << (i - )))) j++;
if(j == n+) continue;
if(j != now) swap(a[now],a[j]);
for(int k=;k<=n;k++)
if(k != now && (a[k] & ( << (i - )))) a[k] ^= a[now];
now++;
}
now--;
return now;
}
int main()
{
srand((unsigned long long)new char);
n = read(),m = read();
for(int i=;i<=m;i++)
{
int u = read(),v = read();
ins(u,v);
}maketree(,);
memset(vis,,sizeof(vis));
dfs();int q = read();
while(q--)
{
int k = read(),top = ;
while(k--)a[++top] = val[read() ^ lastans];
int res = Gauss_Jordan(top);
if(res < top)puts("Disconnected");
else lastans++,puts("Connected");
}
}

bzoj3569 DZY Loves Chinese II & bzoj3237 [AHOI2013] 连通图的更多相关文章

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

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

  2. BZOJ3569 : DZY Loves Chinese II

    这回是真·强制在线了,首先这道题就是AHOI2013连通图的加强版,那道题k最大只有4 那道题的做法是: 取一个生成树,对每条非树边取一个随机权值, 对每条树边设为“覆盖它的所有非树边”的权值的xor ...

  3. 题解-bzoj3569 DZY Loves Chinese II

    Problem bzoj 题意概要:给定\(n\)点\(m\)边无向连通图,\(Q\)次询问删除\(k\)条边后是否仍然连通,强制在线 Solution 半年前考到过这类题目(询问删除任意两条边使得图 ...

  4. BZOJ3569 DZY Loves Chinese II(随机化+树上差分+线性基)

    上一题的强制在线版.对图跑出一个dfs树,给非树边赋上随机权值,树边的权值为覆盖他的非树边权值的异或.这样如果某条树边和覆盖他的非树边都被割掉(即图不连通),他们的异或值就为0.每次对询问看有没有子集 ...

  5. BZOJ3569:DZY Loves Chinese II(线性基)

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

  6. BZOJ3569: DZY Loves Chinese II(线性基构造)

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

  7. 【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 ...

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

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

  9. 【bzoj3569】 DZY Loves Chinese II

    http://www.lydsy.com/JudgeOnline/problem.php?id=3569 (题目链接) 题意 给出一个无向图,$Q$组询问,每次询问将原图断掉$C$条边后是否还连通.在 ...

随机推荐

  1. windows安装apache

    由于个人有强迫倾向,下载软件都喜欢从官网下载,摸索了好久终于摸清楚怎么从Apache官网下载windows安装版的Apache服务器了,现在分享给大家.   工具/原料   apache 方法/步骤 ...

  2. R语言数据分析系列之四

    R语言数据分析系列之四 -- by comaple.zhang 说到统计分析我们就离不开随机变量,所谓随机变量就是数学家们为了更好的拟合现实世界的数据而建立的数学模型.有了她我们甚至能够来预測一个站点 ...

  3. java拾遗1----XML解析(一) DOM解析

    XML解析技术主要有三种: (1)DOM(Document Object Model)文档对象模型:是 W3C 组织推荐的解析XML 的一种方式,即官方的XML解析技术. (2)SAX(Simple ...

  4. 自定义弹窗 VS AlertDialog分享弹窗

    一.摘要 弹窗通常用于提示用户进行某种操作,比如:点击分享按钮,弹窗分享对话框:双击返回按钮,弹窗退出对话框:下载文件,提示下载对话框等等,分享对话框/退出对话框/下载对话框,都可以直接使用Alert ...

  5. linux c编程:信号(二) alarm和pause函数

    使用alarm函数可以设置一个定时器,在将来的某个时刻该定时器超时.当定时器超时后,产生SIGALRM信号.如果忽略或不捕捉此信号,则其默认动作是终止调用该alarm函数的进程 #include< ...

  6. 一张图学习vim常用命令

    一张图学习vim常用命令

  7. jQuery中通过JSONP来跨域获取数据的三种方式

    第一种方法是在ajax函数中设置dataType为'jsonp' $.ajax({ dataType: 'jsonp', url: 'http://www.a.com/user?id=123', su ...

  8. iOS __weak 和 __block 的使用探讨

    在基本的开发中遇到 需要弱引用时候 我一般 用 weak  预防 死锁的时候 我会用 block 的确没出过大错  但是这样处理 的确有点囫囵  现在我想好好理解一下这两个修饰符 "bloc ...

  9. OSI 与 TCP/IP

    OSI参考模型 物理层(Physical Layer) --- 数据表示.物理层规定了激活.维持.关闭通信端点之间的机械特性.电气特性.               功能特性以及过程特性.该层为上层协 ...

  10. Data Structure Stack: Infix to Postfix

    http://geeksquiz.com/stack-set-2-infix-to-postfix/ #include <iostream> #include <vector> ...