题目链接

戳我

\(Solution\)

\(LCT\)裸题

\(Connect\)操作,执行\(link(u,v)\)

\(Destroy\)操作,执行\(cut(u,v)\)

\(Query\)操作,用findroot(y)==findroot(v)判联通

和这题几乎一样

\(Code\)

#include<bits/stdc++.h>
#define rg register
#define file(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout);
using namespace std;
int read(){
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();
return f*x;
}
struct node {
int fa,v,lazy,ch[2];
}a[1000010];
stack<int>s;
bool nroot(int x){
return a[a[x].fa].ch[0]==x||a[a[x].fa].ch[1]==x;
}
void work(int x){
swap(a[x].ch[0],a[x].ch[1]),a[x].lazy^=1;
}
void pushdown(int x){
if(a[x].lazy){
if(a[x].ch[0]) work(a[x].ch[0]);
if(a[x].ch[1]) work(a[x].ch[1]);
a[x].lazy=0;
}
}
void rotate(int x){
int y=a[x].fa,z=a[y].fa,k=(a[y].ch[1]==x);
if(nroot(y)) a[z].ch[a[z].ch[1]==y]=x;
a[x].fa=z,a[a[x].ch[k^1]].fa=y;
a[y].ch[k]=a[x].ch[k^1],a[y].fa=x;
a[x].ch[k^1]=y;
}
void splay(int x){
int u=x;
s.push(u);
while(nroot(u)) s.push(u=a[u].fa);
while(!s.empty()) pushdown(s.top()),s.pop();
while(nroot(x)){
int y=a[x].fa,z=a[y].fa;
if(nroot(y))
(a[y].ch[0]==x)^(a[z].ch[0]==y)?rotate(x):rotate(y);
rotate(x);
}
}
void access(int x){
for(int y=0;x;y=x,x=a[x].fa)
splay(x),a[x].ch[1]=y;
}
void makeroot(int x){
access(x),splay(x),work(x);
}
int findroot(int x){
access(x),splay(x);
while(a[x].ch[0]) pushdown(x),x=a[x].ch[0];
splay(x);
return x;
}
void split(int x,int y){
makeroot(x),access(y),splay(y);
}
void link(int x,int y){
makeroot(x);
if(findroot(y)!=x)
a[x].fa=y;
}
void cut(int x,int y){
makeroot(x);
if(findroot(y)!=x||a[y].fa!=x||a[y].ch[0]) return ;
a[y].fa=a[x].ch[1]=0;
}
bool pd(int x,int y){
return findroot(y)==findroot(x);
}
char c[10];
int main(){
int n=read(),m=read(),p,q;
for(int i=1;i<=m;i++){
scanf("%s",c),p=read(),q=read();
if(c[0]=='D') cut(q,p);
if(c[0]=='C') link(p,q);
if(c[0]=='Q') puts(pd(p,q)?"Yes":"No");
}
return 0;
}

「SDOI2008」洞穴勘测的更多相关文章

  1. 【bzoj2049】[Sdoi2008]Cave 洞穴勘测 link-cut-tree

    2016-05-30  11:04:51 学习了link-cut-tree 二中神犇封禹的讲义感觉讲的超级清晰易懂啊(没有的可以q窝 算是模板吧 #include<bits/stdc++.h&g ...

  2. 【BZOJ】【2049】【SDOI2008】洞穴勘测 Cave

    LCT 哦……LCT的一道更水的裸题,适合学习access,link,cut等基本操作(其实这三个不是在一个层面上的?不要在意这些细节……) /**************************** ...

  3. BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 LCT

    2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnli ...

  4. bzoj 2049: [Sdoi2008]Cave 洞穴勘测 动态树

    2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 3119  Solved: 1399[Submit] ...

  5. 【LCT】BZOJ2049 [SDOI2008]Cave 洞穴勘测

    2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 10059  Solved: 4863[Submit ...

  6. BZOJ_2049_[Sdoi2008]Cave 洞穴勘测_LCT

    BZOJ_2049_[Sdoi2008]Cave 洞穴勘测_LCT Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由 ...

  7. bzoj 2049: [Sdoi2008]Cave 洞穴勘测 (LCT)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2049 题面: 2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 1 ...

  8. BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 (动态树入门)

    2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1528  Solved: 644[Submit][ ...

  9. 2049: [Sdoi2008]Cave 洞穴勘测

    2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 7475  Solved: 3499 [Submi ...

随机推荐

  1. 浅析JavaScript中的typeof运算符

    对JavaScript中的typeof运算符进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助. 如果typeof的运算符是数字.字符串或者布尔值,它返回的结果就是"numb ...

  2. 通过nginx + lua来统计nginx上的监控网络请求和性能

    介绍 以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力. 项目主页: https://github.com/sky ...

  3. jsp页面获取地址栏中的参数

  4. 【bzoj1911】[Apio2010]特别行动队

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4048  Solved: 1913[Submit][Statu ...

  5. win10,python连接mysql报”Can't connect to MySQL server on 'localhost' (10061)”

    一.环境及问题描述 1. 环境 操作系统:win10家庭版,64bit python版本:Python 2.7.15 mysql版本:mysql 5.4.3 2. 问题描述 最近跟公司申请电脑,预装w ...

  6. Docs命令大全 备用

    #1 一: net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" ...

  7. CMD一般命令

    返回根目录:cd\ 回车 进入D盘:输入cd\ 回车,返回根目录,再输入d:回车,即可进入d盘(注意:字符都是英文字符) 进入D盘叫JDK的文件夹:如上面进入d盘后,输入:cd jdk 回车即可 进入 ...

  8. python 类函数

    81定义: class 类名(object):# __init__(self, 参数列表):    # __init__叫构造函数,其作用:使用类实例对象时,自动调用_init_,起到对象进行初始化, ...

  9. hrabs 首页 新闻,快捷菜单,响应式列表,seliverlight

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="firstPage.aspx ...

  10. 初识STM32标准库

    1.CMSIS 标准及库层次关系 CMSIS 标准中最主要的为 CMSIS 核心层,它包括了: STM32标准库可以从官网获得: 在使用库开发时,我们需要把 libraries 目录下的库函数文件添加 ...