题意是箱子套箱子,每次移动箱子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相关推荐

  1. HDOJ HDU 2088 Box of Bricks ACM 2088 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=2088 ...

  2. HDU 2088 Box of Bricks

    解题报告:求要将所有的墙弄成一样的高度最少需要移动多少块砖,水题.不过还要注意一下格式,是两个实例时间有空行,不是每个测试数据后面都有空行. 1 #include<cstdio> 2 in ...

  3. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

  4. 杭电OJ分类题目(2)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(2) HDU Water~~~ HDU 100 ...

  5. 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行为空,那么这些行在第 ...

  6. 【HDU - 1326】Box of Bricks(模拟水题)

    题干: Little Bob likes playing with his box of bricks. He puts the bricks one upon another and builds ...

  7. HDU 5155 Harry And Magic Box

    问题描述 有一天,哈利得到了一个神奇的盒子.这个盒子由n*m个格子组成,有一些格子里会有闪闪发光的宝石.但是盒子的顶部和底部都被神奇的魔法封印着,所以哈利没办法从顶部和底部看到盒子的内部.然而,盒子的 ...

  8. hdu 2518 Dominoes

    Dancing Links--- 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2518 Dominoes Time Limit: 2000/1000 ...

  9. HDU 2836 (离散化DP+区间优化)

    Reference:http://www.cnblogs.com/wuyiqi/archive/2012/03/28/2420916.html 题目链接: http://acm.hdu.edu.cn/ ...

最新文章

  1. Java开发者必须知道的内存泄漏问题
  2. RMAN 不完全恢复
  3. 根据先序和中序序列重建二叉树
  4. NULL 值处理遇到的错误问题.
  5. 关于使用Carbide编译及配置的一点注意事项
  6. Vue — 第四天(components组件)
  7. 初中信息技术python教案_初中信息技术优质课教案 python程序设计开发第二课 第5课变量 教案...
  8. 你应该知道这些有意思的代码
  9. OpenShift 4 - 部署 RabbitMQ 集群
  10. 代理ip网站开发_网站反爬虫策略,用代理IP都能解决吗?
  11. Yolov2 训练时anchor是如何使用的?build_target
  12. Extjs window autoload
  13. 路由器去广告 去除 免刷路由系统 手机网页去广告 安卓去广告 苹果iOS去广告
  14. html 中全角波浪线,中间波浪怎么打出来,靠上的波浪符号怎么打
  15. Modbus_TCP网关与组态王连接方法
  16. 给移动硬盘装上LINUX全攻略,简单几步把Ubuntu装进移动硬盘引导使用
  17. HANA 如何创建XS Job来完成定时任务
  18. ps计算机海报设计,ps海报设计心得.docx
  19. 【AI简报20210604期】意法半导体收购Cartesiam、10个顶级开源AI项目分享
  20. linux 进程 ssl 状态,Linux进程状态与信号

热门文章

  1. python批处理原始核磁数据用于DPABI
  2. Python一亿以内的素数个数_Python编程100例(上)
  3. 一个学习FreeBSD不错的中文网站
  4. NAND FLASH MT29F4G08
  5. 双十一活动三个阶段分别需要做什么,双十一怎样引流,双十一怎样开直通车
  6. csgo人机指令_CSGO指令:命令BOT前往指定位置
  7. 普通计算机怎么算根号_「根号计算器」12、计算机如何实现开根号? - seo实验室...
  8. 计算机二级msoffice选择题知识,2017计算机二级MSoffice选择题练习(含答案)
  9. 水军为手机应用软件排名造假
  10. KIngcms 5.1版本增加站内链接功能自动给指定关键词加上链接