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个编号c1~cK:表示K条边,编号为c1~cK
为了体现在线,c1~cK均需异或之前回答为连通的个数

Output

对于每个询问输出:连通则为‘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

解题思路:

考虑到将原图不连通必须切断一个点的所有联通方式

那么可以想到用一种方式来使多个元素互相抵消。

这些元素就是连同一个点的所有边。

那么使这些遍抵消的方式就是让一条边与其他异或和为0

这就需要线性无关组了。

Dfs出一颗树。

将非树边的每一条边rand上一个权值,

那么这条边能做出贡献的位置就是Dfs树上祖先的位置。

那么就向上更新,在树边处的答案就是后面相关边的异或和

最后在查询时暴力插入线性无关组中,

若出现异或和为0的情况就是所有相关的边都被删除了。

就是不连通了。

代码:

  1. #include<ctime>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<algorithm>
  6. void ade(int f,int t,int no);
  7. typedef long long lnt;
  8. struct pnt{
  9. int hd;
  10. int fa;
  11. lnt val;
  12. }p[];
  13. struct ent{
  14. int twd;
  15. int lst;
  16. int blg;
  17. }e[];
  18. struct edge{
  19. int f,t;
  20. lnt val;
  21. bool vis;
  22. void Insert(int no)
  23. {
  24. scanf("%d%d",&f,&t);
  25. ade(f,t,no);
  26. ade(t,f,no);
  27. }
  28. }ede[];
  29. lnt b[];
  30. int n,m;
  31. int cnt;
  32. int Q;
  33. int lstans;
  34. void ade(int f,int t,int no)
  35. {
  36. cnt++;
  37. e[cnt].twd=t;
  38. e[cnt].blg=no;
  39. e[cnt].lst=p[f].hd;
  40. p[f].hd=cnt;
  41. return ;
  42. }
  43. void B_(int x,int f)
  44. {
  45. p[x].fa=f;
  46. for(int i=p[x].hd;i;i=e[i].lst)
  47. {
  48. int to=e[i].twd;
  49. if(p[to].fa)continue;
  50. ede[e[i].blg].vis=true;
  51. B_(to,x);
  52. }
  53. return ;
  54. }
  55. void C_(int x,int f)
  56. {
  57. for(int i=p[x].hd;i;i=e[i].lst)
  58. {
  59. int to=e[i].twd;
  60. if(p[to].fa==x);else continue;
  61. C_(to,x);
  62. ede[e[i].blg].val^=p[to].val;
  63. p[x].val^=p[to].val;
  64. }
  65. return ;
  66. }
  67. bool Insert(lnt x)
  68. {
  69. for(int i=;i>=;i--)
  70. {
  71. if(x&(1ll<<i))
  72. {
  73. if(b[i]==)
  74. {
  75. b[i]=x;
  76. return true;
  77. }else x^=b[i];
  78. }
  79. }
  80. if(!x)return false;
  81. return true;
  82. }
  83. int main()
  84. {
  85. // freopen("a.in","r",stdin);
  86. srand(time(NULL));
  87. scanf("%d%d",&n,&m);
  88. for(int i=;i<=m;i++)ede[i].Insert(i);
  89. B_(,);
  90. for(int i=;i<=m;i++)
  91. {
  92. if(ede[i].vis)continue;
  93. ede[i].val=rand()+;
  94. p[ede[i].f].val^=ede[i].val;
  95. p[ede[i].t].val^=ede[i].val;
  96. }
  97. C_(,);
  98. scanf("%d",&Q);
  99. while(Q--)
  100. {
  101. int k;bool flag=false;
  102. scanf("%d",&k);
  103. memset(b,,sizeof(b));
  104. for(int i=;i<=k;i++)
  105. {
  106. int x;
  107. scanf("%d",&x);x^=lstans;
  108. if(!Insert(ede[x].val))flag=true;
  109. }
  110. if(flag)
  111. {
  112. puts("Disconnected");
  113. }else{
  114. puts("Connected");
  115. lstans++;
  116. }
  117. }
  118. return ;
  119. }

BZOJ3569: DZY Loves Chinese II(线性基构造)的更多相关文章

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

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

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

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

  3. BZOJ 3569: DZY Loves Chinese II(线性基)

    传送门 解题思路 首先构造出一个生成树,考虑不连接的情况.假设连通两点的非树边和树边都断掉后不连通,那么可以给所有的非树边随机一个互不相同的值,然后树边的权值为过他两端点的非树边权值的异或和,这个可以 ...

  4. BZOJ 3569 DZY Loves Chinese II ——线性基

    [题目分析] 腊鸡题目卡题面. 大概的意思就是给一张无向图,每次删掉其中一些边,问是否联通. 首先想到的是Bitset,可以做到n^2/64.显然过不了. 然而这是lyd在给我们讲线性基的时候的一道题 ...

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

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

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

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

  7. bzoj3569 DZY Loves Chinese II & bzoj3237 [AHOI2013] 连通图

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

  8. 题解-bzoj3569 DZY Loves Chinese II

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

  9. BZOJ3569 : DZY Loves Chinese II

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

随机推荐

  1. Android源代码解析之(十三)--&gt;apk安装流程

    转载请标明出处:一片枫叶的专栏 上一篇文章中给大家分析了一下android系统启动之后调用PackageManagerService服务并解析系统特定文件夹.解析apk文件并安装的过程,这个安装过程实 ...

  2. layDate1.0正式公布,您一直在寻找的的js日期控件

    你是时候换一款日期控件了,而layDate很愿意和您成为工作伙伴.她正致力于成为全球最高大上的web日期支撑,为国内外全部从事web应用开发的同仁提供力所能及的动力.她基于原生JavaScript精心 ...

  3. weblogic 生产模式和开发模式的互相转换

    weblogic 生产模式和开发模式的互相转换 学习了:http://blog.csdn.net/qew110123/article/details/45845935 weblogic10.3生产模式 ...

  4. Windows下使用静态库

    开发工具 vs2010 1.新建win32控制台应用程序 2.将静态库的头文件包括在程序中并手动链接静态库(库文件和头文件都在根文件夹下) watermark/2/text/aHR0cDovL2Jsb ...

  5. Codeforces Round #271 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/474 A题:Keyboard 模拟水题. 代码例如以下: #include <iostream> #include ...

  6. 9、包、访问控制、import、static、static代码块、final、抽象类、接口、instanceof、多态

    1.包 三级命名:公司的尾缀(com).公司名字(baidu).业务(Sale) java.lang:默认包:String.Math,Object,System java.util:工具包 java. ...

  7. 建筑建模学习笔记2——3DMax房屋框架建模

    以下这幅图是用3DMax做出的大体的框架 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I ...

  8. R语言写简单线性回归

    library(MASS) library(ISLR) lm.fit <- lm(medv~lstat,data=Boston) attach(Boston) lm.fit = lm(medv~ ...

  9. rest_framework(解析器 上)

    rest_framework 解析器 对请求题数据进行解析 url from django.conf.urls import url,include from cmdb import views ur ...

  10. springMVC中跳转问题

    在使用SpringMVC时遇到了这个跳转的问题很头疼.现在总结出来,对以后的开发有所帮助. . 1.可以采用ModelAndView: @RequestMapping("test1" ...