【bzoj3237】 Ahoi2013—连通图
http://www.lydsy.com/JudgeOnline/problem.php?id=3237 (题目链接)
题意
给出一个无向图,$Q$组询问,每次询问将原图断掉$C$条边后是否还连通。
Solution
CDQ图分治,并查集维护。实在写不动题了,我能说我是蒯的吗T_T:http://blog.csdn.net/creationaugust/article/details/50889351
细节
bzoj的G++版本是多久以前的了,莫名CE。。
代码
// bzoj3237
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=200010,maxm=5000010;
int ans[maxn],del[maxn],fa[maxn],st[maxm];
int n,m,Q,tim,top;
struct data {int c,id,e[4];}q[maxn];
struct edge {int u,v;}e[maxn]; namespace Unionset {
int find(int x) {
if (fa[x]==x) return x;
st[++top]=x;st[++top]=fa[x];return fa[x]=find(fa[x]);
}
void Union(int u,int v) {
if (find(u)!=find(v)) {
st[++top]=fa[v];
st[++top]=fa[fa[v]];
fa[fa[v]]=fa[u];
}
}
}
using namespace Unionset; void solve(int l,int r) {
int now=top,mid=(l+r)>>1,flag=1;
if (l==r) {
for (int i=0;i<q[l].c && flag;i++)
if (find(e[q[l].e[i]].u)!=find(e[q[l].e[i]].v)) flag=0;
ans[q[l].id]=flag;
for (;now!=top;top-=2) fa[st[top-1]]=st[top];
return;
}
tim++;
for (int i=l;i<=mid;i++)
for (int j=0;j<q[i].c;j++) del[q[i].e[j]]=tim;
for (int i=mid+1;i<=r;i++)
for (int j=0;j<q[i].c;j++)
if (del[q[i].e[j]]!=tim) Union(e[q[i].e[j]].u,e[q[i].e[j]].v);
solve(l,mid);tim++;
for (;now!=top;top-=2) fa[st[top-1]]=st[top];
for (int i=mid+1;i<=r;i++)
for (int j=0;j<q[i].c;j++) del[q[i].e[j]]=tim;
for (int i=l;i<=mid;i++)
for (int j=0;j<q[i].c;j++)
if (del[q[i].e[j]]!=tim) Union(e[q[i].e[j]].u,e[q[i].e[j]].v);
solve(mid+1,r);
for (;now!=top;top-=2) fa[st[top-1]]=st[top];
} int main() {
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++) fa[i]=i;
for (int i=1;i<=m;i++) scanf("%d%d",&e[i].u,&e[i].v);
scanf("%d",&Q);tim=1;
for (int i=1;i<=Q;i++) {
scanf("%d",&q[i].c);q[i].id=i;
for (int j=0;j<q[i].c;j++) scanf("%d",&q[i].e[j]),del[q[i].e[j]]=tim;
}
for (int i=1;i<=m;i++) if (del[i]!=tim) Union(e[i].u,e[i].v);
solve(1,Q);
for (int i=1;i<=Q;i++) puts(ans[i] ? "Connected" : "Disconnected");
return 0;
}
【bzoj3237】 Ahoi2013—连通图的更多相关文章
- [BZOJ3237][AHOI2013]连通图(分治并查集)
3237: [Ahoi2013]连通图 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1736 Solved: 655[Submit][Status ...
- bzoj3569 DZY Loves Chinese II & bzoj3237 [AHOI2013] 连通图
给一个无向连通图,多次询问,每次询问给 k 条边,问删除这 k 条边后图的连通性,对于 bzoj3237 可以离线,对于 bzoj3569 强制在线 $n,m,q \leq 500000,k \leq ...
- BZOJ3237: [Ahoi2013]连通图
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3237 cdq分治+缩点. 可以每次处理的时候把除l~r之外的边的端点都连起来.然后去跑cdq分 ...
- 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 ...
- BZOJ3237 AHOI2013连通图(线段树分治+并查集)
把查询看做是在一条时间轴上.那么每条边都有几段存在时间.于是线段树分治就好了. 然而在bzoj上t掉了,不知道是常数大了还是写挂了. 以及brk不知道是啥做数组名过不了编译. #include< ...
- 2018.10.01 bzoj3237: [Ahoi2013]连通图(cdq分治+并查集)
传送门 cdq分治好题. 对于一条边,如果加上它刚好连通的话,那么删掉它会有两个大集合A,B.于是我们先将B中禁用的边连上,把A中禁用的边禁用,再递归处理A:然后把A中禁用的边连上,把B中禁用的边禁用 ...
- BZOJ 3237([Ahoi2013]连通图-cdq图重构-连通性缩点)
3237: [Ahoi2013]连通图 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 106 Solved: 31 [ Submit][ St ...
- BZOJ 3237: [Ahoi2013]连通图
3237: [Ahoi2013]连通图 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1161 Solved: 399[Submit][Status ...
- 线段树分治初步学习&洛谷P5227[AHOI2013]连通图
线段树分治 其实思想说起来是比较简单的,我们把这个题里的所有操作(比如连边删边查询balabala)全部拍到一棵线段树上,然后对着整棵树dfs一下求解答案,顺便把操作做一下,回溯的时候撤销一下即可.虽 ...
随机推荐
- 带阴影的圆形 QLabel
带阴影的圆形 Label 来自: 公孙二狗
- 纯 CSS 利用 label + input 实现选项卡
clip 属性 用于剪裁绝对定位元素. .class { position:absolute; clip:rect(0px,60px,200px,0px); } scroll-behavior: sm ...
- log4j配置简要说明
################################################################################ #①配置根Logger,其语法为: # ...
- grunt-inline:一个资源内嵌插件
一.插件简介 将引用的外部资源,如js.css.img等,内嵌到引用它们的文件里去. 二.使用场景 在项目中,出于某些原因,有的时候我们需要将一些资源,比如js脚本内嵌到页面中去.比如我们的html页 ...
- 从头到尾谈一下HTTPS
引言 “你能谈一下HTTPS吗?” “一种比HTTP安全的协议.” “...” 如果面试这样说的话那差不多就gg了,其实HTTPS要展开回答的话内容还挺丰富的.本篇文章详细介绍了HTTPS是什么.为什 ...
- 阿里云ECS服务器源配置
前段时间领取了阿里云ECS免费试用6个月的福利,此处记录一下服务器源配置过程和服务器用户创建过程. 一.CentOS源配置 1.备份 mv /etc/yum.repos.d/CentOS-Base.r ...
- 微软职位内部推荐-Principal Software Eng Mgr
微软近期Open的职位: Job Title:   Principal Software Eng Mgr Work Location: Shanghai, China Job Desc ...
- Daily Scrumming* 2015.12.13(Day 5)
一.团队scrum meeting照片 二.今日总结 姓名 WorkItem ID 工作内容 签入链接以及备注说明 江昊 任务1063 查找与学习前端工具库,并写出一篇指导文档 https://gi ...
- 第一Sprint阶段对各组提出的意见
组号 组名 意见 1 理财猫 1.界面深色的部分,字体应调成亮色,可以适当美化字体. 2.希望能够自动记录花销,而不是只能手动“记一笔”. 3.功能略少,比如可以添加“收入详情”.“支出详情”. 2 ...
- python自定义mininet拓扑
python自定义mininet拓扑 前言 闲来无聊,想到很早之前都是用GUI来自定义拓扑,这次用python来自定义一下(以前留下的苦果) 转自Mininet 自定义网络拓扑 过程相对简单 实现过程 ...