首先我们可以把没有询问过的边处理掉,重构图

当然这样也不影响复杂度

考虑到每次询问要删除的边很少,我们完全可以整体处理

把询问划分成两个集合,在前半部分询问未出现边我们可以整体处理掉,缩点重编号(询问的边和点都要重编号)

然后通过分治继续对前半部分做

然后回来,后半部分我们也可以同样的处理

这样我们要维护一个关于当前边集的栈即可

UPD:省队集训的时候听到一种非常神的的随机化做法,摘录如下:

Step1:随便建立一颗生成树;

Step2:对于每一条不在生成树上的边,随机一个64位整数作为这条边的权值;

Step3:对于每条在生成树上的边,定义它的权值为连接他的两个端点对应部分的所有非树边的权值的xor和;

Step4:对于每一组询问,枚举询问中边的子集,如果某个子集所对应的边的权值xor和等于0,则我们可以断言,去掉这些边以后图不连通;否则,去掉这些边不影响图的连通性。

证明我有时间在放上来吧(并不会……),不过很明显这个复杂度随便操cdq分治

 type node=record
x,y:longint;
end;
var e:array[..] of node;
te:array[..] of node;
q:array[..,..] of longint;
h,fa:array[..] of longint;
v,ans:array[..] of boolean;
mh:array[..] of longint;
t,tm,th,n,m,k,i,j:longint; function getf(x:longint):longint;
begin
if fa[x]<>x then fa[x]:=getf(fa[x]);
exit(fa[x]);
end; procedure lab(n,m,l,r:longint);
var i,j,x,y:longint;
begin
for i:= to n do
fa[i]:=i;
for i:= to m do
if not v[i] then
begin
x:=getf(e[i].x); y:=getf(e[i].y);
if x<>y then fa[x]:=y;
end;
th:=;
for i:= to n do
if fa[i]=i then
begin
inc(th);
h[i]:=th;
end;
for i:= to n do
h[i]:=h[getf(i)];
tm:=;
for i:= to m do
if v[i] then
begin
inc(tm);
mh[i]:=tm;
e[tm].x:=h[e[i].x];
e[tm].y:=h[e[i].y];
end;
for i:=l to r do
for j:= to q[i,] do
q[i,j]:=mh[q[i,j]];
end; procedure mark(l,r:longint);
var i,j:longint;
begin
for i:=l to r do
for j:= to q[i,] do
v[q[i,j]]:=true;
end; procedure cdq(n,m,l,r:longint);
var mid,i:longint;
begin
if l=r then
begin
ans[l]:=true;
for i:= to q[l,] do
if e[q[l,i]].x<>e[q[l,i]].y then
begin
ans[l]:=false;
break;
end;
exit;
end;
mid:=(l+r) shr ;
for i:= to m do
begin
inc(t);
te[t]:=e[i]; //te维护边的栈
v[i]:=false;
end;
mark(l,mid);
lab(n,m,l,mid);
cdq(th,tm,l,mid);
for i:=m downto do
begin
e[i]:=te[t];
dec(t);
v[i]:=false;
end;
mark(mid+,r);
lab(n,m,mid+,r);
cdq(th,tm,mid+,r);
end; begin
readln(n,m);
for i:= to m do
readln(e[i].x,e[i].y);
readln(k);
for i:= to k do
begin
read(q[i,]);
for j:= to q[i,] do
read(q[i,j]);
readln;
end;
mark(,k);
lab(n,m,,k);
cdq(th,tm,,k);
for i:= to k do
if ans[i] then writeln('Connected')
else writeln('Disconnected');
end.

bzoj3237的更多相关文章

  1. 【bzoj3237】 Ahoi2013—连通图

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

  2. [BZOJ3237][AHOI2013]连通图(分治并查集)

    3237: [Ahoi2013]连通图 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1736  Solved: 655[Submit][Status ...

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

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

  4. BZOJ3237: [Ahoi2013]连通图

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3237 cdq分治+缩点. 可以每次处理的时候把除l~r之外的边的端点都连起来.然后去跑cdq分 ...

  5. bzoj3237(cdq+并查集)

    这题一眼lct,然而 #include<iostream> #include<cstdio> #include<cmath> #include<cstring ...

  6. BZOJ3237:[AHOI2013]连通图(线段树分治,并查集)

    Description Input Output Sample Input 4 5 1 2 2 3 3 4 4 1 2 4 3 1 5 2 2 3 2 1 2 Sample Output Connec ...

  7. bzoj3237 cdq分治+可撤销并查集

    https://www.lydsy.com/JudgeOnline/problem.php?id=3237 年轻的花花一直觉得cdq分治只能用来降维,不料竟然可以用来分治询问 N<=100000 ...

  8. BZOJ3237 AHOI2013连通图(线段树分治+并查集)

    把查询看做是在一条时间轴上.那么每条边都有几段存在时间.于是线段树分治就好了. 然而在bzoj上t掉了,不知道是常数大了还是写挂了. 以及brk不知道是啥做数组名过不了编译. #include< ...

  9. 2018.10.01 bzoj3237: [Ahoi2013]连通图(cdq分治+并查集)

    传送门 cdq分治好题. 对于一条边,如果加上它刚好连通的话,那么删掉它会有两个大集合A,B.于是我们先将B中禁用的边连上,把A中禁用的边禁用,再递归处理A:然后把A中禁用的边连上,把B中禁用的边禁用 ...

随机推荐

  1. sublime 设置localhost 2

    最近sidebar用不了了,提示更新然后就自动卸载了: 研究了下其他方式实现: Sublime Text 2 Sublime Text 3 都可以使用: 菜单 --> Tools --> ...

  2. hbase on spark

    1.在spark的伪分布式环境下安装HBASE (1)版本:我使用的spark版本是1.3.0,使用的hbase版本是hbase-0.94.16 (2)解压,tar zxvf  hbase-0.94. ...

  3. C++ STL中迭代器失效的问题

    my_container.erase(iter); 其中my_container是STL的某种容器,iter是指向这个容器中某个元素的迭代器.如果不是在for,while循环中,这种方式删除元素没有问 ...

  4. Python学习_从文件读取数据和保存数据

    运用Python中的内置函数open()与文件进行交互 在HeadFirstPython网站中下载所有文件,解压后以chapter 3中的“sketch.txt”为例: 新建IDLE会话,首先导入os ...

  5. EXPLAIN PLAN获取SQL语句执行计划

    一.获取SQL语句执行计划的方式 1. 使用explain plan 将执行计划加载到表plan_table,然后查询该表来获取预估的执行计划 2. 启用执行计划跟踪功能,即autotrace功能 3 ...

  6. XML文件序列化和反序列化的相关内容

    问题缘由: XML反序列化出错,XML 文档(2, 2)中有错误,不应有 <configuration xmlns=''> 解决方法: 其实这个是很简单的,因为一般来说都是XML文档书写错 ...

  7. 【BZOJ 1497】 [NOI2006]最大获利

    Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一 ...

  8. Tomcat 搭配 Nginx 还是 Apache 呢?

    Apache .Tomcat.Nginx的区别, 哪个与Tomcat搭配效率高? 一. 定义: 1. Apache Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机 ...

  9. 友盟分享在appdelegate中的调用语句举例

    //友盟 [UMSocialData setAppKey:UmengAppkey]; [UMSocialConfig setSupportedInterfaceOrientations:UIInter ...

  10. MoonWarriors-lua——《雷电战机》游戏-Lua移植版

    MoonWarriors是一个使用Cocos2d-Html5引擎开发的类似雷电战机的游戏Demo,源代码发布在Cocos2d-x官网的引擎示例当中.MoonWarriors-lua是为了学习Cocos ...