[BZOJ3237]连通图
Description
.jpg)
Input
.jpg)
Output
.jpg)
Sample Input
1 2
2 3
3 4
4 1
2 4
3
1 5
2 2 3
2 1 2
Sample Output
Disconnected
Connected
HINT
N<=100000 M<=200000 K<=100000
自己yy的奇怪解法,首先我们可以发现一张图在联通的时候并查集祖先的$size=n$(这不是废话)
然后就只要线段树分治随便维护一下并查集就完事了
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<map>
#define ls node<<1
#define rs node<<1|1
#define M 200010
#define mod 1000000007
using namespace std;
struct point{int u,v;}p[M],st[M];
int n,m,k,top;
int size[M],fa[M],f[M];
vector<int>tag[M<<];
int find(int x) {
while(x!=fa[x]) x=fa[x];
return fa[x];
}
void insert(int node,int l,int r,int l1,int r1,int id) {
if(l1<=l&&r1>=r) {
tag[node].push_back(id);return;
}int mid=(l+r)/;
if(l1<=mid) insert(ls,l,mid,l1,r1,id);
if(r1>mid) insert(rs,mid+,r,l1,r1,id);
}
void unionn(int x,int y) {
x=find(x),y=find(y);
if(x==y) return;
if(size[x]<size[y]) swap(x,y);
st[++top]=(point){x,y};
size[fa[y]=x]+=size[y];
}
void Del(int now) {
while(top!=now) {
int x=st[top].u,y=st[top--].v;
size[x]-=size[fa[y]=y];
}
}
void Dfs(int node,int l,int r) {
int now=top;
for(int i=;i<tag[node].size();i++)
unionn(p[tag[node][i]].u,p[tag[node][i]].v);
if(l==r) {
int x=;
while(fa[x]!=x) x=fa[x];
puts(size[x]==n?"Connected":"Disconnected");
}
else {
int mid=(l+r)/;
Dfs(ls,l,mid),Dfs(rs,mid+,r);
}
Del(now);
}
int main() {
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) fa[i]=i,size[i]=;
for(int a,b,i=;i<=m;i++) {
scanf("%d%d",&a,&b);f[i]=;
p[i]=(point){a,b};
}
scanf("%d",&k);
for(int i=;i<=k;i++) {
int c;scanf("%d",&c);
for(int j=;j<=c;j++) {
int id;scanf("%d",&id);
if(f[id]!=i) insert(,,k,f[id],i-,id);
f[id]=i+;
}
}
for(int i=;i<=m;i++)
if(f[i]!=k+)
insert(,,k,f[i],k,i);
Dfs(,,k);
return ;
}
[BZOJ3237]连通图的更多相关文章
- [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 (题目链接) 题意 给出一个无向图,$Q$组询问,每次询问将原图断掉$C$条边后是否还连通. ...
- 【BZOJ3237】【AHOI2013】连通图 [CDQ分治]
连通图 Time Limit: 20 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description Input Output Sampl ...
- 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 ...
随机推荐
- api静态化预案
1.之前听到api静态化预案,一直以为是前端发送api请求,如果api请求失败,则再次发送一条请求,去请求备份的静态资源. 2.前两天了解到的api静态化预案是这样的:在请求api时,给api请求加上 ...
- Android 菜单动态变化【添加或去除】
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android: ...
- RabbitMQ的安装和使用Python连接RabbitMQ
绪论 这里的环境使用的是Mac OS X系统,所有的配置和使用都是基于Mac OS X 和Python 2.7 以及对应的pika库的. RabbitMQ的安装和配置 安装部分 #brew insta ...
- 关于OS命令注入的闭合问题
1.在Windows下 windows下非常好办,只需要&肯定可以执行: C:\Users\xxx\Desktop>aaaa | 127.0.0.1 'aaaa' 不是内部或外部命令,也 ...
- java反序列化漏洞的检测
1.首先下载常用的工具ysoserial 这边提供下载地址:https://jitpack.io/com/github/frohoff/ysoserial/master-v0.0.5-gb617b7b ...
- 【BZOJ2314】士兵的放置 树形DP
[BZOJ2314]士兵的放置 Description 八中有N个房间和N-1双向通道,任意两个房间均可到达.现在出了一件极BT的事,就是八中开始闹鬼了.老大决定加强安保,现在如果在某个房间中放一个士 ...
- 170517、Redis 的安装与使用(单节点)
IP : 192.168.4.111 1环 境: CentOS 6.6s Redis 版 本 : redis- - 3.0 0 (考虑到 Redis3.0 在集群和性能提升方面的特性,rc 版为正式版 ...
- Visual Studio 2017正式版离线安装方法
Visual Studio 2017 RTM正式版离线安装及介绍. 首先至官网下载:https://www.visualstudio.com/zh-hans/downloads/ VS 2017 正式 ...
- PL/SQL编程基础(三):数据类型划分
数据类型划分 在Oracle之中所提供的数据类型,一共分为四类: 标量类型(SCALAR,或称基本数据类型) 用于保存单个值,例如:字符串.数字.日期.布尔: 标量类型只是作为单一类型的数据存在,有的 ...
- 为linux扩展swap分区
1.查看当前swap分区使用情况 [root@localhost ~]# swapon -s Filename Type Size Used Priority /dev/sda2 ...