hdu 2475 box LCT
题意是箱子套箱子,每次移动箱子x到箱子y里,或询问x最外层的箱子。
这一道题根是固定的,不能换根。
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 50005
using namespace std;
int fa[maxn],ch[maxn][2];
int f[maxn];
bool isroot(int x)
{return ch[fa[x]][0]!=x&&ch[fa[x]][1]!=x;}
bool dir(int x)
{return ch[fa[x]][1]==x;}
void rotate(int x)
{int y=fa[x],z=fa[y];bool b=dir(x);int a=ch[x][!b];if(!isroot(y))ch[z][dir(y)]=x;fa[x]=z;ch[x][!b]=y;fa[y]=x;ch[y][b]=a;if(a) fa[a]=y;
}
void splay(int x)
{while(!isroot(x)){int y=fa[x];if(isroot(y)) rotate(x);else{bool b=dir(x),c=dir(y);if(b^c) {rotate(y);rotate(x);}else {rotate(x);rotate(x);}}}
}
void access(int x)
{for(int t=0;x;t=x,x=fa[x])splay(x),ch[x][1]=t;
}
int find_root(int x)
{access(x);splay(x);while(ch[x][0]) x=ch[x][0];return x;
}
void cut(int x)
{access(f[x]);splay(x);fa[x]=0;
}
void link(int x,int y)
{cut(x);if(!y)return ;if(find_root(y)==x){splay(x);fa[x]=f[x];return ;}fa[x]=y;f[x]=y;
}
char s[10];
void init()
{memset(f,0,sizeof(f));memset(fa,0,sizeof(fa));memset(ch,0,sizeof(ch));
}
int main()
{int n;bool fst=1;while(scanf("%d",&n)!=EOF){if(fst) fst=0;else puts("");init();for(int i=1;i<=n;i++){scanf("%d",&fa[i]);f[i]=fa[i];}int m,x,y;scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%s%d",s,&x);if(s[0]=='Q')printf("%d\n",find_root(x));else{scanf("%d",&y);link(x,y);}}}return 0;
}
hdu 2475 box LCT相关推荐
- HDOJ HDU 2088 Box of Bricks ACM 2088 IN HDU
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=2088 ...
- HDU 2088 Box of Bricks
解题报告:求要将所有的墙弄成一样的高度最少需要移动多少块砖,水题.不过还要注意一下格式,是两个实例时间有空行,不是每个测试数据后面都有空行. 1 #include<cstdio> 2 in ...
- [kuangbin]各种各样的题单
[kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...
- 杭电OJ分类题目(2)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(2) HDU Water~~~ HDU 100 ...
- hdu 5155 Harry And Magic Box(DP)
题目链接:hdu 5155 Harry And Magic Box dp[i][j]表示i∗j的矩阵方案数,dp[i][j]从dp[i−k][j−1]中转移,枚举前面j-1列中k行为空,那么这些行在第 ...
- 【HDU - 1326】Box of Bricks(模拟水题)
题干: Little Bob likes playing with his box of bricks. He puts the bricks one upon another and builds ...
- HDU 5155 Harry And Magic Box
问题描述 有一天,哈利得到了一个神奇的盒子.这个盒子由n*m个格子组成,有一些格子里会有闪闪发光的宝石.但是盒子的顶部和底部都被神奇的魔法封印着,所以哈利没办法从顶部和底部看到盒子的内部.然而,盒子的 ...
- hdu 2518 Dominoes
Dancing Links--- 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2518 Dominoes Time Limit: 2000/1000 ...
- HDU 2836 (离散化DP+区间优化)
Reference:http://www.cnblogs.com/wuyiqi/archive/2012/03/28/2420916.html 题目链接: http://acm.hdu.edu.cn/ ...
最新文章
- Java开发者必须知道的内存泄漏问题
- RMAN 不完全恢复
- 根据先序和中序序列重建二叉树
- NULL 值处理遇到的错误问题.
- 关于使用Carbide编译及配置的一点注意事项
- Vue — 第四天(components组件)
- 初中信息技术python教案_初中信息技术优质课教案 python程序设计开发第二课 第5课变量 教案...
- 你应该知道这些有意思的代码
- OpenShift 4 - 部署 RabbitMQ 集群
- 代理ip网站开发_网站反爬虫策略,用代理IP都能解决吗?
- Yolov2 训练时anchor是如何使用的?build_target
- Extjs window autoload
- 路由器去广告 去除 免刷路由系统 手机网页去广告 安卓去广告 苹果iOS去广告
- html 中全角波浪线,中间波浪怎么打出来,靠上的波浪符号怎么打
- Modbus_TCP网关与组态王连接方法
- 给移动硬盘装上LINUX全攻略,简单几步把Ubuntu装进移动硬盘引导使用
- HANA 如何创建XS Job来完成定时任务
- ps计算机海报设计,ps海报设计心得.docx
- 【AI简报20210604期】意法半导体收购Cartesiam、10个顶级开源AI项目分享
- linux 进程 ssl 状态,Linux进程状态与信号
热门文章
- python批处理原始核磁数据用于DPABI
- Python一亿以内的素数个数_Python编程100例(上)
- 一个学习FreeBSD不错的中文网站
- NAND FLASH MT29F4G08
- 双十一活动三个阶段分别需要做什么,双十一怎样引流,双十一怎样开直通车
- csgo人机指令_CSGO指令:命令BOT前往指定位置
- 普通计算机怎么算根号_「根号计算器」12、计算机如何实现开根号? - seo实验室...
- 计算机二级msoffice选择题知识,2017计算机二级MSoffice选择题练习(含答案)
- 水军为手机应用软件排名造假
- KIngcms 5.1版本增加站内链接功能自动给指定关键词加上链接