给一个无向连通图,多次询问,每次询问给 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. 批处理--md5校检

    @echo off rem 获取文件xx.zip的MD5 for /f "delims=" %%i in ('md5.exe xx.zip') do (set md5_var=%% ...

  2. redis-windows和linux下安装

    Window 下安装 下载地址:https://github.com/dmajkic/redis/downloads. 下载到的Redis支持32bit和64bit.根据自己实际情况选择,将64bit ...

  3. 【BZOJ2466】[中山市选2009]树 树形DP

    [BZOJ2466][中山市选2009]树 Description 图论中的树为一个无环的无向图.给定一棵树,每个节点有一盏指示灯和一个按钮.如果节点的按扭被按了,那么该节点的灯会从熄灭变为点亮(当按 ...

  4. appium报'Command 'D\:\\android-sdk-windows\\platform-tools\\adb.exe -P 5037 -s “adb device” shell pm clear appPackage' exited with code 1'

    解决方法:是因为手机开发者模式没有允许USB调试(安全模式),打开即可

  5. HDU 5355 Cake (WA后AC代码,具体解析,构造题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5355 题面: Cake Time Limit: 2000/1000 MS (Java/Others) ...

  6. 只需两步删除 node_modules

    peng@PENG-PC /E/_My_File_____/home/learn/web_qianduan/mithril-demo/demo2/mithril -demo $ npm install ...

  7. Smarty模板的逻辑运算符号稍微做一下总结

    对Smarty模板的逻辑运算符号稍微做一下总结,以备后用. eq    equal : 相等neq    not equal:不等于gt    greater than:大于lt    less th ...

  8. maven 手动加载第三方jar、zip包

    使用maven搭建工程时,难免要加载大量的第三方的jar包.zip包比较少用,而maven的官网提供的jar往往不能满足需求,这时需要我们手动加载到我们本地或nexus私服的仓库中. 1.加载jar包 ...

  9. python打包工具 --- pyinstaller

    安装 安装python并添加到环境变量之后,在终端执行如下命令即可: pip install pyinstaller 截图如下: 若安装失败,可到: https://www.lfd.uci.edu/~ ...

  10. 浏览器对同一IP的最大并发请求数记录

    转载自http://www.iefans.net/liulanqi-zuida-bingfa-lianjieshu/,以方便查阅 版本 HTTP 1.0 服务器(宽带连接) HTTP 1.1 服务器( ...