给一个无向连通图,多次询问,每次询问给 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. iOS 10 中引入了 Message 框架

    WWDC 2016 上最重磅的消息之一就是在 iOS 10 中引入了 Message 框架.开发者现在可以为苹果内置的 Messages 应用开发扩展啦.通过开发一个应用扩展,你可以让用户跟应用在 M ...

  2. Web前端开发规范【HTML/JavaScript/CSS】

    前言 这是一份旨在增强团队的开发协作,提高代码质量和打造开发基石的编码风格规范,其中包含了 HTML, JavaScript 和 CSS/SCSS 这几个部分.我们知道,当一个团队开始指定并实行编码规 ...

  3. Educational Codeforces Round 1 (C) (atan2 + long double | 大数)

    这题只能呵呵了. 东搞西搞,折腾快一天,最后用了一个800多行的代码AC了. 好好的题目你卡这种精度干啥. 还有要卡您就多卡点行不,为什么long double 又可以过... 废了N长时间写个了不管 ...

  4. 【BZOJ3309】DZY Loves Math 莫比乌斯反演+线性筛(好题)

    [BZOJ3309]DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10 ...

  5. Java内部类{[普通内部类][静态内部类]}

    package Learn.com.seven; /** * * @author tqw * 本例主要学习内部类的使用 * Java的内部类分成两部分来讲: * 1:内部类 * 2:静态内部类 * * ...

  6. nginx日志自动切分

    #!/bin/bash NGINX_LOG_PATH=/data/nginx-/logs # 昨天 YESTERDAY=$(date -d "yesterday" +%Y-%m-% ...

  7. 阿里云服务(一) OSS

    阿里电子商务迄今是中国最大的电商网站,各个厂商都在去模仿.就像google的大数据处理,Hadoop的思想等等,只有做出了一些成绩,起了带头羊,那么将会是非常吃香的.从今天开始简单学习了解一下阿里的各 ...

  8. ubuntu vim退出时出错

    E505: "vimrc" is read-only (add ! to override) wq退出时加!强制保存退出 "vimrc" E212: Can't ...

  9. C#Winform之等待窗体

    窗体主要代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...

  10. Java多线程系列 JUC线程池03 线程池原理解析(二)

    转载  http://www.cnblogs.com/skywang12345/p/3509954.html  http://www.cnblogs.com/skywang12345/p/351294 ...