[ CDQ分治 并查集 ][ AHOI2013 ] BZOJ3237
来源:互联网 发布:下载图片编辑软件 编辑:程序博客网 时间:2024/05/18 01:00
分治到区间
#include<bits/stdc++.h>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline void Read(int& x){ char c=nc(); for(;c<'0'||c>'9';c=nc()); for(x=0;c>='0'&&c<='9';x=(x<<3)+(x<<1)+c-48,c=nc());}#define N 100010#define M 200010int a[N][5],num[N];int k,n,m,p;int f[N],s[M*50],t[M*50],top;int u[M],v[M],Q,c[M];bool Ans[N];inline int Find(int x){ if(f[x]==x)return x; int y=Find(f[x]); if(y!=f[x])s[++top]=x,t[top]=f[x]; return f[x]=y;}inline void Solve(int l,int r){ int k=top; if(l==r){ bool fl=0; for(int i=1;i<=num[l];i++){ int tmp=a[l][i]; int x=Find(u[tmp]),y=Find(v[tmp]); if(x!=y){ fl=1; break; } } while(top!=k)f[s[top]]=t[top],top--; Ans[l]=fl; return; } int Mid=l+r>>1; for(int i=Mid+1;i<=r;i++) for(int j=1;j<=num[i];j++){ int tmp=a[i][j]; if(!(--c[tmp])){ int x=Find(u[tmp]),y=Find(v[tmp]); if(x!=y){ s[++top]=x;t[top]=f[x];f[x]=y; } } } Solve(l,Mid); for(int i=Mid+1;i<=r;i++)for(int j=1;j<=num[i];j++)c[a[i][j]]++; while(top!=k)f[s[top]]=t[top],top--; for(int i=l;i<=Mid;i++) for(int j=1;j<=num[i];j++){ int tmp=a[i][j]; if(!(--c[tmp])){ int x=Find(u[tmp]),y=Find(v[tmp]); if(x!=y){ s[++top]=x;t[top]=f[x];f[x]=y; } } } Solve(Mid+1,r); for(int i=l;i<=Mid;i++)for(int j=1;j<=num[i];j++)c[a[i][j]]++; while(top!=k)f[s[top]]=t[top],top--;}int main(){ Read(n);Read(m); for(int i=1;i<=m;i++)Read(u[i]),Read(v[i]); Read(Q); for(int i=1;i<=Q;i++){ Read(num[i]); for(int j=1;j<=num[i];j++)Read(a[i][j]),c[a[i][j]]++; } for(int i=1;i<=n;i++)f[i]=i; for(int i=1;i<=m;i++) if(!c[i]){ int x=Find(u[i]),y=Find(v[i]); if(x!=y)f[x]=y; } Solve(1,Q); for(int i=1;i<=Q;i++) if(!Ans[i])puts("Connected");else puts("Disconnected"); return 0;}
阅读全文
0 0
- [ CDQ分治 并查集 ][ AHOI2013 ] BZOJ3237
- 【bzoj3237】[Ahoi2013]连通图 cdq分治+并查集
- bzoj3237[Ahoi2013]连通图 cdq分治+并查集
- BZOJ3237: [Ahoi2013]连通图 cdq分治+并查集
- [CDQ分治 并查集 || 随机化权值Xor] BZOJ 3237 [Ahoi2013]连通图
- 【openjudge】C15C Rabbit's Festival【CDQ分治+并查集】
- 【openjudge】C15C Rabbit's Festival【CDQ分治+并查集】
- BZOJ 4025|二分图|CDQ分治|并查集|LCT
- [CDQ分治 并查集 || LCT] BZOJ 4025 二分图
- 【bzoj3563】DZY Loves Chinese 在线cdq分治+并查集
- 【hdu】5354 Bipartite Graph【cdq分治+并查集】
- bzoj 4025: 二分图 cdq分治+并查集
- BZOJ 3237 浅谈CDQ分治+带撤销并查集
- BZOJ4025:二分图 ((CDQ分治+并查集)/LCT)
- BZOJ 3237 连通图 (cdq分治 并查集)
- 【AHOI2013】【BZOJ3237】连通图
- BZOJ3237: [Ahoi2013]连通图
- bzoj3237[Ahoi2013] 连通图
- 程序员着装的改变
- Oracle sql 去重
- centos 7安装Apache
- 【bzoj3545: [ONTAK2010]Peaks】线段树合并
- LWC 61:740. Delete and Earn
- [ CDQ分治 并查集 ][ AHOI2013 ] BZOJ3237
- Centos安装git
- vue-cli脚手架引入图片的几个方法
- 现金贷火爆市场的背后,竟是用户数据的大规模泄露
- mysql 锁相关blog梳理
- Android Studio 如何依赖第三方项目详解
- 安卓实现动画的3种方式
- cJSON
- 几种优化mysql的方法