题面

Description

神校XJ之学霸兮,Dzy皇考曰JC。

摄提贞于孟陬兮,惟庚寅Dzy以降。

纷Dzy既有此内美兮,又重之以修能。

遂降临于OI界,欲以神力而凌♂辱众生。

今Dzy有一魞歄图,其上有N座祭坛,又有M条膴蠁边。

时而Dzy狂WA而怒发冲冠,神力外溢,遂有K条膴蠁边灰飞烟灭。

而后俟其日A50题则又令其复原。(可视为立即复原)

然若有祭坛无法相互到达,Dzy之神力便会大减,于是欲知其是否连通。

Input

第一行N,M

接下来M行x,y:表示M条膴蠁边,依次编号

接下来一行Q

接下来Q行:

每行第一个数K而后K个编号c1cK:表示K条边,编号为c1cK

为了体现在线,c1~cK均需异或之前回答为连通的个数

Output

对于每组询问,输出到输出文件zap.out一个正整数,表示满足条件的整数对数。

对于每个询问输出:连通则为‘Connected’,不连通则为‘Disconnected’

(不加引号)

Sample Input

5 10

2 1

3 2

4 2

5 1

5 3

4 1

4 3

5 2

3 1

5 4

5

1 1

3 7 0 3

4 0 7 4 6

2 2 7

4 5 0 2 13

Sample Output

Connected

Connected

Connected

Connected

Disconnected

Hint

N≤100000 M≤500000 Q≤50000 1≤K≤15

数据保证没有重边与自环

Tip:请学会使用搜索引擎

简明题意

n个点,m条无向边,求断掉k条边后,残图是否仍然联通,强制在线。

题目分析

考虑先构造出原图的一棵生成树,对于每条非树边rand一个权值。

每条树边的权值设为可以与当前边构成回路的边的权值异或和。

那么,如果当前图不连通,当且仅当一条树边被删除且覆盖了这条树边的所有边都被删除了。

此时,这些边的权值异或起来为0。

问题转化为:

给定边中是否存在若干个权值异或起来为0。

此时便可使用线性基求解。


建树

简单的建树操作,任意一棵生成树均可。

注意用\(fa[ ]\)记录父亲,并用\(use[ ]\)记录好哪些是树上的边,方便之后处理。

  1. void Dfs1(int x){
  2. vis[x]=1;
  3. for(int i=h[x];i;i=g[i].next){
  4. int to=g[i].to;
  5. if(vis[to])continue;
  6. use[i>>1]=1,fa[to]=x;
  7. Dfs1(to);
  8. }
  9. }

处理边权

因为此时是一棵树,所以增加一条边会且仅会产生一条回路。

那么,我们给一条非树边的两点附上权值,

在上传的过程中把该权值附给与父亲节点相连的边,这样就可以覆盖至整条回路了。

  1. void Dfs2(int x){
  2. for(int i=h[x];i;i=g[i].next){
  3. int to=g[i].to;
  4. if(fa[to]^x)continue;
  5. Dfs2(to);
  6. e[i>>1].val^=val[to];
  7. val[x]^=val[to];
  8. }
  9. }
  10. for(int i=1;i<=m;i++){
  11. if(use[i])continue;
  12. int x=(LL)rand*rand()%1000000000+1;
  13. e[i].val=x;
  14. val[e[i].x]^=x,val[e[i].y]^=x;
  15. }

代码实现

  1. #include<iostream>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<algorithm>
  5. #include<cstdio>
  6. #include<iomanip>
  7. #include<cstdlib>
  8. #include<ctime>
  9. #define MAXN 0x7fffffff
  10. typedef long long LL;
  11. const int N=100005,M=500005;
  12. using namespace std;
  13. inline int Getint(){register int x=0,f=1;register char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}return x*f;}
  14. int h[N],cnt=1;
  15. struct node{int to,next;}g[M<<1];
  16. void AddEdge(int x,int y){g[++cnt].to=y,g[cnt].next=h[x],h[x]=cnt;}
  17. struct Edge{int x,y,val;}e[M];
  18. int fa[N],val[M];
  19. bool vis[N],use[M];
  20. void Dfs1(int x){
  21. vis[x]=1;
  22. for(int i=h[x];i;i=g[i].next){
  23. int to=g[i].to;
  24. if(vis[to])continue;
  25. use[i>>1]=1,fa[to]=x;
  26. Dfs1(to);
  27. }
  28. }
  29. void Dfs2(int x){
  30. for(int i=h[x];i;i=g[i].next){
  31. int to=g[i].to;
  32. if(fa[to]^x)continue;
  33. Dfs2(to);
  34. e[i>>1].val^=val[to];
  35. val[x]^=val[to];
  36. }
  37. }
  38. int p[35];
  39. bool Insert(int x){
  40. for(int i=31;i>=0;i--){
  41. if(!((x>>i)&1))continue;
  42. if(!p[i]){p[i]=x;break;}
  43. x^=p[i];
  44. }
  45. return x>0;
  46. }
  47. int main(){
  48. srand(time(0));
  49. int n=Getint(),m=Getint();
  50. for(int i=1;i<=m;i++){
  51. int x=e[i].x=Getint(),y=e[i].y=Getint();
  52. AddEdge(x,y),AddEdge(y,x);
  53. }
  54. Dfs1(1);
  55. for(int i=1;i<=m;i++){
  56. if(use[i])continue;
  57. int x=(LL)rand()*rand()%1000000000+1;
  58. e[i].val=x;
  59. val[e[i].x]^=x,val[e[i].y]^=x;
  60. }
  61. Dfs2(1);
  62. int Q=Getint(),ans=0;
  63. while(Q--){
  64. int k=Getint();
  65. memset(p,0,sizeof(p));
  66. bool ok=0;
  67. for(int i=1;i<=k;i++){
  68. int x=Getint()^ans;
  69. if(!Insert(e[x].val))ok=1;
  70. }
  71. if(!ok)puts("Connected"),ans++;
  72. else puts("Disconnected");
  73. }
  74. return 0;
  75. }

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

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

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

  2. 【BZOJ 3569】 DZY Loves Chinese II

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

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

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

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

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

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

  6. 【bzoj 3309 】 DZY Loves Math

    Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0.给定正整数a,b,求 ...

  7. 【bzoj3569】 DZY Loves Chinese II

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

  8. 【BZOJ 3561】 DZY Loves Math VI

    题目: 给定正整数n,m.求   题解: 水题有益身心健康.(博客园的辣鸡数学公式) 其实到这我想强上伯努利数,然后发现$n^2$的伯努利数,emmmmmm 发现这个式子可以算时间复杂度,emmmmm ...

  9. 【BZOJ 3309】DZY Loves Math

    http://www.lydsy.com/JudgeOnline/problem.php?id=3309 \[\sum_{T=1}^{min(a,b)}\sum_{d|T}f(d)\mu(\frac ...

随机推荐

  1. 2018年分享的Spring Cloud 2.x系列文章

    还有几个小时2018年就要过去了,盘点一下小编从做做公众号以来发送了273篇文章,其中包含原创文章90篇,虽然原创的有点少,但是2019年小编将一如既往给大家分享跟多的干货,分享工作中的经验,让大家在 ...

  2. JS鼠标提示框效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. LeetCode Array Easy 119. Pascal's Triangle II

    Description Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's tria ...

  4. shell位置参数变量

  5. update 后没有加where条件解决办法

    MySQL 误操作后数据恢复(update,delete忘加where条件) 在数据库日常维护中,开发人员是最让人头痛的,很多时候都会由于SQL语句写的有问题导致服务器出问题,导致资源耗尽.最危险的操 ...

  6. mysql中创建函数

    MySql创建函数 一.查看创建函数的功能是否开启: mysql> show variables like '%func%'; +-------------------------------- ...

  7. The 'with' and 'as' Keywords

    Programming is all about getting the computer to do the work. Is there a way to get Python to automa ...

  8. 【转】 MySQL主从(Master-Slave)复制

    首先声明:此文是在失去U盘极度郁闷的时候写的,有些零散,估计也有错误.欢迎大家指出 MYSQL服务器复制配置   这是根据我之前看的MYSQL复制的文档然后自己亲自实验的过程.配置的功能比较简单. 环 ...

  9. javascript表单验证的例子

    function checkUsername(){ //对username的内容进行验证. //要求:首字符是字母或下划线,其他由下划线字母数字组成,共4-20位 var inputOb=docume ...

  10. Confluence 6 站点备份和恢复

    Atlassian 推荐针对生产环境中安装使用的 Confluence 使用原始数据库工具备份策略. 在默认的情况下,Confluence 每天都会备份所有数据和附件到 XML 文件备份中.这些文件被 ...