「bzoj 4025: 二分图」
显然二分图没有奇环
于是考虑使用并查集维护一下看看是否存在奇环
我们可以考虑加权并查集,维护出\(x\)到\(fa_x\)的实际距离
由于我们只需要考虑奇偶性,于是我们处理出到根的路径异或一下就好了
之后是动态删边的问题,我们可以考虑线段树分治
于是我们需要在线段树分治的时候维护一个并查集,还需要支持撤回操作
我们只需要一个不路径压缩的启发式合并并查集就好了
代码
#include<cstdio>
#include<vector>
#define re register
inline int read() {
char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
std::vector<int> u[320005],v[320005],f[320005],st[320005];
int n,m,T,now,tp;
int ans[100005],fa[100005],h[100005],dis[100005];
void change(int l,int r,int x,int y,int i,int a,int b) {
if(x<=l&&y>=r) {u[i].push_back(a),v[i].push_back(b);return;}
int mid=l+r>>1;
if(x<=mid) change(l,mid,x,y,i<<1,a,b);
if(y>=mid+1) change(mid+1,r,x,y,i<<1|1,a,b);
}
inline int find(int x,int opt) {
if(!opt) now=0;
while(fa[x]!=x) now^=dis[x],x=fa[x];
return x;
}
inline int merge(int x,int y) {
tp=0;
if(h[x]<h[y]) {dis[x]=(now^1);fa[x]=y;return x;}
if(h[y]<h[x]) {dis[y]=(now^1);fa[y]=x;return y;}
h[x]++;fa[y]=x;tp=1;dis[y]=(now^1);return y;
}
inline void clear(int i) {
for(re int j=st[i].size()-1;~j;--j) {
int x=st[i][j];
h[fa[x]]-=f[i][j];fa[x]=x;
}
}
void solve(int l,int r,int i) {
for(re int j=0;j<u[i].size();j++) {
int xx=find(u[i][j],0),yy=find(v[i][j],1);
if(xx!=yy) st[i].push_back(merge(xx,yy)),f[i].push_back(tp);
else if(!now) {
for(re int k=l;k<=r;k++) ans[k]=1;
clear(i);return;
}
}
if(l==r) {clear(i);return;}
int mid=l+r>>1;
solve(mid+1,r,i<<1|1);solve(l,mid,i<<1);
clear(i);
}
int main() {
n=read(),m=read(),T=read();
for(re int i=1;i<=n;i++) fa[i]=i,h[i]=1;
for(re int x,y,s,t,i=1;i<=m;i++) {
x=read(),y=read(),s=read()+1,t=read();
if(s>t) continue;
change(1,T,s,t,1,x,y);
}
solve(1,T,1);
for(re int i=1;i<=T;i++) puts(ans[i]?"No":"Yes");
return 0;
}
「bzoj 4025: 二分图」的更多相关文章
- bzoj 4025 二分图 分治+并查集/LCT
bzoj 4025 二分图 [题目大意] 有n个点m条边,边会在start时刻出现在end时刻消失,求对于每一段时间,该图是不是一个二分图. 判断二分图的一个简单的方法:是否存在奇环 若存在奇环,就不 ...
- [BZOJ 4025]二分图(线段树分治+带边权并查集)
[BZOJ 4025]二分图(线段树分治+带边权并查集) 题面 给出一个n个点m条边的图,每条边会在时间s到t出现,问每个时间的图是否为一个二分图 \(n,m,\max(t_i) \leq 10^5\ ...
- BZOJ 4025: 二分图 [线段树CDQ分治 并查集]
4025: 二分图 题意:加入边,删除边,查询当前图是否为二分图 本来想练lct,然后发现了线段树分治的做法,感觉好厉害. lct做法的核心就是维护删除时间的最大生成树 首先口胡一个分块做法,和hno ...
- BZOJ 4025 二分图(时间树+并查集)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4025 [题目大意] 给出一张图,有些边只存在一段时间,问在一个每个时间段, 这张图是否 ...
- bzoj 4025: 二分图
Description 神犇有一个n个节点的图.因为神犇是神犇,所以在T时间内一些边会出现后消失.神犇要求出每一时间段内这个图是否是二分图.这么简单的问题神犇当然会做了,于是他想考考你. 解题报告: ...
- bzoj 4025 二分图——线段树分治+LCT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4025 线段树分治,用 LCT 维护链的长度即可.不过很慢. 正常(更快)的方法应该是线段树分 ...
- 【刷题】BZOJ 4025 二分图
Description 神犇有一个n个节点的图.因为神犇是神犇,所以在T时间内一些边会出现后消失.神犇要求出每一时间段内这个图是否是二分图.这么简单的问题神犇当然会做了,于是他想考考你. Input ...
- bzoj 4025 二分图 lct
题目传送门 题解: 首先关于二分图的性质, 就是没有奇环边. 题目其实就是让你判断每个时段之内有没有奇环. 其次 lct 只能维护树,(反正对于我这种菜鸟选手只会维护树), 那么对于一棵树来说, 填上 ...
- 「bzoj 4184: shallot」
权限题 线段树分治加线性基 首先这个题要求删除线性基肯定是没法处理的 于是我们套上一个线段树分治 线段树分治就是一种能够避免删除的神仙操作 我们发现询问是对一个时间的单点询问,而每一个数存在的时间却是 ...
随机推荐
- EF Code-First数据迁移
Code-First数据迁移 首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: usi ...
- easyui 带参数的datagride
<table id="tt" style="width:100%;height:355px" url="../aowei/Handler/Han ...
- SOA(面向服务架构)——踩坑后反思:这样值得吗?
SOA(面向服务架构)——踩坑后反思:这样值得吗?
- 一:XML知识整理
一:xml 1. xml简介 a) xml, eXtensible Markup Language, 可扩展标记语言.是一种标记语言. b) xml 是一种非常灵活的语言, 没有固定的标签, 所有的标 ...
- Druid SqlParser理解及使用入门
以前的项目中很少去思考SQL解析这个事情,即使在saas系统或者分库分表的时候有涉及到也会有专门的处理方案,这些方案也对使用者隐藏了实现细节. 而最近的这个数据项目里面却频繁涉及到了对SQL的处理,原 ...
- vmware创建centos虚拟机
下载centos 安装之前你需要下载centos镜像:http://mirrors.aliyun.com/ 创建虚拟机 如果还没有安装vmware请参考:https://www.cnblogs.com ...
- HTTP的response code 1xx,2xx,3xx,4xx,5xx分别代表什么
HTTP 状态码点击链接可了解详情.您也可以访问 HTTP 状态码上的 W3C 页获取更多信息. 1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态码. 2xx (成功):表示成功处理了请 ...
- groovy和java的主要区别
1.Default imports,默认情况下,导入下面的包: java.io. * java.lang.* java.math.BigDecimal中 java.math.BigInteger中 j ...
- git 命令合并分支代码
git 命令合并分支代码 对于复杂的系统,我们可能要开好几个分支来开发,那么怎样使用git合并分支呢? 合并步骤: 1.进入要合并的分支(如开发分支合并到master,则进入master目录) git ...
- swoole框架快速入门
swoole有两个部分. 一个是PHP扩展,用C开发的,这是核心. 另一个是框架,像yii.TP.Laravel一样,是PHP代码写的. swoole扩展本身提供了web服务器功能,可以替代php-f ...