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的情况就是所有相关的边都被删除了。

就是不连通了。

代码:

 #include<ctime>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
void ade(int f,int t,int no);
typedef long long lnt;
struct pnt{
int hd;
int fa;
lnt val;
}p[];
struct ent{
int twd;
int lst;
int blg;
}e[];
struct edge{
int f,t;
lnt val;
bool vis;
void Insert(int no)
{
scanf("%d%d",&f,&t);
ade(f,t,no);
ade(t,f,no);
}
}ede[];
lnt b[];
int n,m;
int cnt;
int Q;
int lstans;
void ade(int f,int t,int no)
{
cnt++;
e[cnt].twd=t;
e[cnt].blg=no;
e[cnt].lst=p[f].hd;
p[f].hd=cnt;
return ;
}
void B_(int x,int f)
{
p[x].fa=f;
for(int i=p[x].hd;i;i=e[i].lst)
{
int to=e[i].twd;
if(p[to].fa)continue;
ede[e[i].blg].vis=true;
B_(to,x);
}
return ;
}
void C_(int x,int f)
{
for(int i=p[x].hd;i;i=e[i].lst)
{
int to=e[i].twd;
if(p[to].fa==x);else continue;
C_(to,x);
ede[e[i].blg].val^=p[to].val;
p[x].val^=p[to].val;
}
return ;
}
bool Insert(lnt x)
{
for(int i=;i>=;i--)
{
if(x&(1ll<<i))
{
if(b[i]==)
{
b[i]=x;
return true;
}else x^=b[i];
}
}
if(!x)return false;
return true;
}
int main()
{
// freopen("a.in","r",stdin);
srand(time(NULL));
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)ede[i].Insert(i);
B_(,);
for(int i=;i<=m;i++)
{
if(ede[i].vis)continue;
ede[i].val=rand()+;
p[ede[i].f].val^=ede[i].val;
p[ede[i].t].val^=ede[i].val;
}
C_(,);
scanf("%d",&Q);
while(Q--)
{
int k;bool flag=false;
scanf("%d",&k);
memset(b,,sizeof(b));
for(int i=;i<=k;i++)
{
int x;
scanf("%d",&x);x^=lstans;
if(!Insert(ede[x].val))flag=true;
}
if(flag)
{
puts("Disconnected");
}else{
puts("Connected");
lstans++;
}
}
return ;
}

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. Qt之字体文件(TTF)

    简述 TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式,随着windows的流行,已经变成最常用的一种字体文件表示方式. 在一些特殊的场合,系统字符集不 ...

  2. poj-1151-Atlantis-线段树求面积并

    非常裸的线段树求面积并. 坐标须要离散化一下. #include<stdio.h> #include<iostream> #include<stdlib.h> #i ...

  3. NHibernate概括

    什么是?NHibernate?NHibernate是一个面向.NET环境的对象/关系数据库映射工具. 对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种 ...

  4. POJ 2110 二分+暴搜

    题意: 给你一个矩阵 ,你能往各个方向走(不走出去就行),每次只能上下左右走一格,问路径上的点权最大值和最小值的差最小是多少. 思路: 首先 二分最后的答案, 暴力枚举当前的区间是啥. DFS 就OK ...

  5. java9新特性-18-统一的JVM日志系统

    1.官方Feature 158: Unified JVM Logging 271: Unified GC Logging 2.使用说明 日志是解决问题的唯一有效途径:曾经很难知道导致JVM性能问题和导 ...

  6. js base64加密与C#后台base64解密

    js代码 function encode64(input) { var output = ""; var base = new Base64(); var output = bas ...

  7. windows 实用DOS命令。

    1. findfind方法要比findstr要简单,参数要少.find /? 命令可以查看所有find命令的参数.find命令的基本格式是这样的:find "要查找的字符串" 要查 ...

  8. [JSOI2018]潜入行动 树形DP_复杂计数

    code #include <cstdio> #include <algorithm> #include <cstring> #include <string ...

  9. [BJWC2011]禁忌 AC 自动机 概率与期望

    #include<cstdio> #include<algorithm> #include<cstring> #include<string> #inc ...

  10. Tomcat IO阻塞异常

    tomcat的maxThreads.acceptCount(最大线程数.最大排队数) tomcat 的Connector配置如下 <Connector port="8080" ...