题目

显然二分图没有奇环

于是考虑使用并查集维护一下看看是否存在奇环

我们可以考虑加权并查集,维护出\(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: 二分图」的更多相关文章

  1. bzoj 4025 二分图 分治+并查集/LCT

    bzoj 4025 二分图 [题目大意] 有n个点m条边,边会在start时刻出现在end时刻消失,求对于每一段时间,该图是不是一个二分图. 判断二分图的一个简单的方法:是否存在奇环 若存在奇环,就不 ...

  2. [BZOJ 4025]二分图(线段树分治+带边权并查集)

    [BZOJ 4025]二分图(线段树分治+带边权并查集) 题面 给出一个n个点m条边的图,每条边会在时间s到t出现,问每个时间的图是否为一个二分图 \(n,m,\max(t_i) \leq 10^5\ ...

  3. BZOJ 4025: 二分图 [线段树CDQ分治 并查集]

    4025: 二分图 题意:加入边,删除边,查询当前图是否为二分图 本来想练lct,然后发现了线段树分治的做法,感觉好厉害. lct做法的核心就是维护删除时间的最大生成树 首先口胡一个分块做法,和hno ...

  4. BZOJ 4025 二分图(时间树+并查集)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4025 [题目大意] 给出一张图,有些边只存在一段时间,问在一个每个时间段, 这张图是否 ...

  5. bzoj 4025: 二分图

    Description 神犇有一个n个节点的图.因为神犇是神犇,所以在T时间内一些边会出现后消失.神犇要求出每一时间段内这个图是否是二分图.这么简单的问题神犇当然会做了,于是他想考考你. 解题报告: ...

  6. bzoj 4025 二分图——线段树分治+LCT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4025 线段树分治,用 LCT 维护链的长度即可.不过很慢. 正常(更快)的方法应该是线段树分 ...

  7. 【刷题】BZOJ 4025 二分图

    Description 神犇有一个n个节点的图.因为神犇是神犇,所以在T时间内一些边会出现后消失.神犇要求出每一时间段内这个图是否是二分图.这么简单的问题神犇当然会做了,于是他想考考你. Input ...

  8. bzoj 4025 二分图 lct

    题目传送门 题解: 首先关于二分图的性质, 就是没有奇环边. 题目其实就是让你判断每个时段之内有没有奇环. 其次 lct 只能维护树,(反正对于我这种菜鸟选手只会维护树), 那么对于一棵树来说, 填上 ...

  9. 「bzoj 4184: shallot」

    权限题 线段树分治加线性基 首先这个题要求删除线性基肯定是没法处理的 于是我们套上一个线段树分治 线段树分治就是一种能够避免删除的神仙操作 我们发现询问是对一个时间的单点询问,而每一个数存在的时间却是 ...

随机推荐

  1. java自学-流程控制语句

    一件事情从开始到结束,需要先做什么,再做什么,最后再怎么做,这段过程就是一个流程.程序逻辑处理也是一个流程,java中有专门的流程控制语句,主要分为这几种:顺序,判断,选择,循环. 1.顺序流程  顺 ...

  2. CodeForces 616A(水题)

    while(t--) 最后结果t=-1 #include <iostream> #include <string> #include <cstring> #incl ...

  3. CodeForces 614A(水题)

    这道题有个需要注意的地方,就是范围大小 2^16 = 65535,2^32 = 65535(10^4),2^16 = 4294967295(10^9),2^64=9223372036854775807 ...

  4. jquery replace方法去空格

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. css控制一个元素点击后, 改变另外一个元素的状态

    1.点击后改变子元素.myclass:active span{ color:#00f;} 此方式在ios下不生效,chrome下正常  2.改变下一个兄弟元素.myclass:active +span ...

  6. django基础一之web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  7. 在Ubuntu 14.04.1 LTS 上安装gettext失败

    使用apt-get install -f,因为有额外的依赖.

  8. vue项目使用vue-i18n和iView切换多语言

    效果图: 当然,如果使用iview组件,组件也会对应切换语言. 这里,假设已经用vue-cli脚手架创建了项目,熟悉vue-router,而且已经引入了iview UI. 第一步: 我们在main.j ...

  9. Portal for ArcGIS 10.2.2更改域名和导入自定义证书

    1.产品版本 Portal for ArcGIS10.2.2(同样适用于ArcGIS10.3) 2.修改说明 )修改Portal中的域名:(2)修改Portal中的证书. 3.修改步骤 3.1.在ho ...

  10. Leetcode算法比赛----First Unique Character in a String

    问题描述 Given a string, find the first non-repeating character in it and return it's index. If it doesn ...