bzoj#4423-[AMPPZ2013]Bytehattan【并查集】
正题
题目链接:https://darkbzoj.tk/problem/4423
题目大意
给出一个\(n*n\)的网格图,然后四联通的点之间连接。每次删掉一条边求这条边的两个点是否连通。强制在线。
\(1\leq n\leq 1500,1\leq m\leq 2n(n-1)\)
解题思路
转换成对偶图之后就可以变成加边判断连通性的问题了。
一个很简单的理解就是如果新的删去的边在对偶图构成了一个环那么就会被分成环内和环外了。
时间复杂度\(O(m\alpha(m))\)
code
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1600;
int n,k,fa[N*N];
int find(int x)
{return (fa[x]==x)?(x):(fa[x]=find(fa[x]));}
void Unionm(int x,int y){
x=find(x);y=find(y);
if(x==y)return;fa[x]=y;
}
int main()
{
scanf("%d%d",&n,&k);
bool last=1;
for(int i=1;i<=(n+1)*(n+1);i++)fa[i]=i;
for(int i=1;i<=n;i++){
Unionm(i,i+1);
Unionm((i-1)*(n+1)+1,i*(n+1)+1);
Unionm(n*(n+1)+i,n*(n+1)+i+1);
Unionm((i-1)*(n+1)+n+1,i*(n+1)+n+1);
}
for(int i=1;i<=k;i++){
int x1,x2,y1,y2,x,y,p,q;
char op1[2],op2[2],op;
scanf("%d%d%s",&x1,&y1,&op1);
scanf("%d%d%s",&x2,&y2,&op2);
if(last)x=x1,y=y1,op=op1[0];
else x=x2,y=y2,op=op2[0];
if(op=='N'){
p=x*(n+1)+y+1;
q=(x-1)*(n+1)+y+1;
p=find(p);q=find(q);
if(p!=q)last=1,puts("TAK");
else last=0,puts("NIE");
}
else{
p=x*(n+1)+y+1;
q=x*(n+1)+y;
p=find(p);q=find(q);
if(p!=q)last=1,puts("TAK");
else last=0,puts("NIE");
}
Unionm(p,q);
}
return 0;
}
bzoj#4423-[AMPPZ2013]Bytehattan【并查集】的更多相关文章
- BZOJ 4423: [AMPPZ2013]Bytehattan 并查集+平面图转对偶图
4423: [AMPPZ2013]Bytehattan Time Limit: 3 Sec Memory Limit: 128 MB Submit: 277 Solved: 183 [Submit ...
- bzoj 4423 [AMPPZ2013]Bytehattan(对偶图,并查集)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4423 [题意] 给定一个平面图,随时删边,并询问删边后两点是否连通.强制在线. [科普 ...
- BZOJ 4423: [AMPPZ2013]Bytehattan 平面图转对偶图 + 并查集
Description 比特哈顿镇有n*n个格点,形成了一个网格图.一开始整张图是完整的.有k次操作,每次会删掉图中的一条边(u,v),你需要回答在删除这条边之后u和v是否仍然连通. Input 第一 ...
- BZOJ 4423: [AMPPZ2013]Bytehattan
Sol 对偶图+并查集. 思路非常好,将网格图转化成对偶图,在原图中删掉一条边,相当于在对偶图中连上一条边(其实就是网格的格点相互连边),每次加边用并查集维护就可以了. 哦对,还要注意边界就是网格外面 ...
- 【BZOJ-4423】Bytehattan 并查集 + 平面图转对偶图
4423: [AMPPZ2013]Bytehattan Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 144 Solved: 103[Submit][ ...
- BZOJ 3674 可持久化并查集加强版(路径压缩版本)
/* bzoj 3674: 可持久化并查集加强版 http://www.lydsy.com/JudgeOnline/problem.php?id=3674 用可持久化线段树维护可持久化数组从而实现可持 ...
- BZOJ 3674 可持久化并查集加强版(按秩合并版本)
/* bzoj 3674: 可持久化并查集加强版 http://www.lydsy.com/JudgeOnline/problem.php?id=3674 用可持久化线段树维护可持久化数组从而实现可持 ...
- bzoj 3674: 可持久化并查集加强版 (启发式合并+主席树)
Description Description:自从zkysb出了可持久化并查集后……hzwer:乱写能AC,暴力踩标程KuribohG:我不路径压缩就过了!ndsf:暴力就可以轻松虐!zky:…… ...
- BZOJ 3674 可持久化并查集加强版(主席树变形)
3673: 可持久化并查集 by zky Time Limit: 5 Sec Memory Limit: 128 MB Submit: 2515 Solved: 1107 [Submit][Sta ...
- bzoj 4025 二分图 分治+并查集/LCT
bzoj 4025 二分图 [题目大意] 有n个点m条边,边会在start时刻出现在end时刻消失,求对于每一段时间,该图是不是一个二分图. 判断二分图的一个简单的方法:是否存在奇环 若存在奇环,就不 ...
随机推荐
- Linux 分区扩容(根分区扩容,SWAP 分区扩容,挂载新分区为目录)
请访问原文链接:https://sysin.org/blog/linux-partition-expansion/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页: ...
- C# 正则表达式的重点知识 1
- Socket 网络编程和IO模型
最近做了一个织机数据采集的服务器程序. 结构也非常简单,织机上的嵌入式设备,会通过Tcp 不停的往服务器发送一些即时数据.织机大改有个几十台到几百台不定把 刨去业务,先分析一下网络层的大概情况.每台织 ...
- .Net Core WebApi (一) --Config
ASP.NET Core launchsettings.json 文件 位置:项目根文件夹的"Properties"文件夹中 使用:从 Visual Studio 或使用.NET ...
- C#序列化和反序列化 之 dynamic 动态Json的反序列化
序列化和反序列化的常识不再赘述,如果不清楚这个,可以 参考一下其他人写的文章https://www.cnblogs.com/maitian-lf/p/3670570.html 总结的说, 序列化 是把 ...
- FileUtils常用方法 - commons-io常用工具类
FileUtils常用常量 public static final long ONE_KB = 1024; public static final BigInteger ONE_KB_BI = Big ...
- webpack4 插件ProvidePlugin使用遇到的问题
根据博客https://www.cnblogs.com/geyouneihan/p/9769808.html学习webpack4中使用ProvidePlugin遇到了自定义js无法使用的问题,解决之后 ...
- ASP截取字符 截取字符之间的字符
ASP截取字符:MID函数Mid(变量或字串符,开始字节, 结尾字节(可不填)) InStrRev(变量, "字串符") 最后出现位置InStr(变量, "字串符&qu ...
- Learning ROS: Roslaunch tips for large projects
Design tip: Top-level launch files should be short, and consist of include's to other files correspo ...
- grpc基础
RPC 框架原理 RPC 框架的目标就是让远程服务调用更加简单.透明,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP).序列化方式(XML/Json/ 二进制)和通信细节.服务调用者可以像调 ...