bzoj 2049: [Sdoi2008]Cave 洞穴勘测
#include<cstdio>
#include<iostream>
using namespace std;
int shu[][],n,m,fa[],st[];
bool rev[];
bool isroot(int a1)
{
return shu[fa[a1]][]!=a1&&shu[fa[a1]][]!=a1;
}
void pushdown(int a1)
{
int l=shu[a1][],r=shu[a1][];
if(rev[a1])
{
rev[a1]^=;
rev[l]^=;
rev[r]^=;
swap(shu[a1][],shu[a1][]);
}
}
void zhuan(int a1)
{
int y=fa[a1],z=fa[y],l,r;
if(shu[y][]==a1)
l=;
else
l=;
r=l^;
if(!isroot(y))
if(shu[z][]==y)
shu[z][]=a1;
else
shu[z][]=a1;
fa[a1]=z;
fa[y]=a1;
shu[y][l]=shu[a1][r];
fa[shu[y][l]]=y;
shu[a1][r]=y;
}
void splay(int a1)
{
int top=;
top++;
st[top]=a1;
for(int i=a1;!isroot(i);i=fa[i])
{
top++;
st[top]=fa[i];
}
for(int i=top;i;i--)
pushdown(st[i]);
for(;!isroot(a1);)
{
int y=fa[a1],z=fa[a1];
if(!isroot(y))
if(y==shu[z][]^a1==shu[y][])
zhuan(a1);
else
zhuan(y);
zhuan(a1);
}
}
void access(int a1)
{
int t=;
for(;a1;)
{
splay(a1);
shu[a1][]=t;
t=a1;
a1=fa[a1];
}
}
void gen(int a1)
{
access(a1);
splay(a1);
rev[a1]^=;
}
void lian(int a1,int a2)
{
gen(a1);
fa[a1]=a2;
splay(a1);
}
void cut(int a1,int a2)
{
gen(a1);
access(a2);
splay(a2);
shu[a2][]=fa[a1]=;
}
int find(int a1)
{
access(a1);
splay(a1);
int y;
for(y=a1;shu[y][];y=shu[y][]);
return y;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<m;i++)
{
int a1,a2;
char ch[];
scanf("%s%d%d",ch,&a1,&a2);
if(ch[]=='C')
lian(a1,a2);
if(ch[]=='D')
cut(a1,a2);
if(ch[]=='Q')
{
int a3,a4;
a3=find(a1);
a4=find(a2);
if(a3==a4)
printf("Yes\n");
else
printf("No\n");
}
}
return ;
}
link-cut-tree
bzoj 2049: [Sdoi2008]Cave 洞穴勘测的更多相关文章
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 LCT
2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnli ...
- bzoj 2049: [Sdoi2008]Cave 洞穴勘测 动态树
2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 3119 Solved: 1399[Submit] ...
- bzoj 2049: [Sdoi2008]Cave 洞穴勘测 (LCT)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2049 题面: 2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 1 ...
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 (动态树入门)
2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1528 Solved: 644[Submit][ ...
- [BZOJ 2049] [Sdoi2008] Cave 洞穴勘测 【LCT】
题目链接:BZOJ - 2049 题目分析 LCT的基本模型,包括 Link ,Cut 操作和判断两个点是否在同一棵树内. Link(x, y) : Make_Root(x); Splay(x); F ...
- 【刷题】BZOJ 2049 [Sdoi2008]Cave 洞穴勘测
Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好 ...
- bzoj 2049 [Sdoi2008]Cave 洞穴勘测(LCT)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2049 [题意] 给定森林,可能有连边或断边的操作,回答若干个连通性的询问. [思路] ...
- ●BZOJ 2049 [Sdoi2008]Cave洞穴勘测
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2049 题解: LCT入门题 就是判两个点是否在同一颗树里 代码: #include<c ...
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘测——LCT
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2049 省选之前来切一道数据结构模板题. 题意 这是一道模板题. N个点,M次操作,每次加边/ ...
- BZOJ 2049 [Sdoi2008]Cave 洞穴勘测(动态树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2049 [题目大意] 要求支持树的断边和连边,以及连接查询 [题解] LCT练习题 [代 ...
随机推荐
- retire or not retire ? is a question.
corejava 上的一段代码 因吹思婷 "C:\Program Files\Java\jdk1.8.0_101\bin\java" -Didea.launcher.port=75 ...
- ubuntu_杂
1. 虚拟机安装的 ubuntu 12.04,在关闭了 一段时间不操作就屏保 和 锁屏 之后, 在一段时间之后 虚拟机的屏幕还是变黑了,貌似是 os将 显示器关闭了. 这个相关的设置是在哪里? 相关设 ...
- Python学习(1)安装Python
***** 安装Python 在官网上 https://www.python.org/downloads/ 可以看到有3.5.1与2.7.11两个版本,我这里用的是3.5.1版本 我用的是win7/ ...
- Docker-网络基础配置
从外部访问容器 指定容器端口随机映射主机端口 [root@wls12c /]$ docker run -p -d --name web tomcat /bin/bash -c /root/apache ...
- css技术和实例
今天,我为大家收集精选了30个使用纯CSS完成的强大实践的优秀CSS技术和实例,您将在这里发现很多与众不同的技术,比如:图片集.阴影效果.可扩展按钮.菜单等-这些实例都是使用纯CSS和HTML实现的. ...
- sp工具类编写
package com.itheima.mobilesafe74.utils; import android.content.Context; import android.content.Share ...
- Python 学习笔记 - 10.类(Class) 1
定义 Python 的 Class 比较特别,和我们习惯的静态语言类型定义有很大区别. 1. 使用一个名为 __init__ 的方法来完成初始化.2. 使用一个名为 __del__ 的方法来完成类似析 ...
- Css_Backgroud-position(背景图片)定位问题详解
background-position的说明: 设置或检索对象的背景图像位置.必须先指定 background-image 属性.该属性定位不受对象的补丁属性( padding )设置影响. ...
- INTERPRETER(解释器)
1 意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 2 动机:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个 ...
- Python核心编程-细节
直接从六张开始看看书里有什么. cmp() len() max() and min() sorted() and reversed() enumerate() and zip() sum() list ...