博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
splay树 1285 宠物收养所
阅读量:7191 次
发布时间:2019-06-29

本文共 1182 字,大约阅读时间需要 3 分钟。

#include
#include
using namespace std;int shu[80004][2],n,size,root,kind,zhi[80004],fa[80004],sum=0;int b1,b2;void xuan(int a1){ int a2,a3,l,r; a2=fa[a1]; a3=fa[a2]; if(shu[a2][0]==a1) l=0; else l=1; r=l^1; if(a2==root) root=a1; else if(shu[a3][0]==a2) shu[a3][0]=a1; else shu[a3][1]=a1; fa[a1]=a3; fa[a2]=a1; shu[a2][l]=shu[a1][r]; fa[shu[a1][r]]=a2; shu[a1][r]=a2; return;}void zhuan(int a1){ int y,z; for(;a1!=root;) { y=fa[a1]; z=fa[y]; if(y!=root) if((shu[y][0]==a1)^(shu[z][0]==y)) xuan(a1); else xuan(y); xuan(a1); }}void cha(int &a1,int a2,int a3){ if(a1==0) { size++; a1=size; zhi[a1]=a2; fa[a1]=a3; zhuan(a1); return; } if(a2
=a2) { b2=a1; hou(shu[a1][0],a2); } else hou(shu[a1][1],a2);}void del(int a1){ zhuan(a1); if(shu[a1][0]*shu[a1][1]==0) root=shu[a1][0]+shu[a1][1]; else { int k=shu[a1][1]; while(shu[k][0]) k=shu[k][0]; shu[k][0]=shu[a1][0]; fa[shu[a1][0]]=k; root=shu[a1][1]; } fa[root]=0; return; }int main(){ scanf("%d",&n); for(int i=0;i

转载于:https://www.cnblogs.com/xydddd/p/5137397.html

你可能感兴趣的文章
ora01219数据库未打开
查看>>
keepalived初探
查看>>
html中嵌入flvplayer.swf播放器,播放视频
查看>>
CI中自定义SQL查询,LIKE模糊查询的处理
查看>>
[转]linux(centos)搭建SVN服务器
查看>>
QtWidgets Module's Classes
查看>>
TortoiseGit 连接oschina不用每次输入用户名和密码的方法
查看>>
Android RelativeLayout
查看>>
[Android]Parcelable encountered IOException writing serializable object (name = xxx)
查看>>
中局域网LAN中建立局域网可访问的类GitHub的服务器
查看>>
2015第七周四
查看>>
使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
查看>>
探索 OpenStack 之(14):OpenStack 中 RabbitMQ 的使用
查看>>
原码、反码、补码和移码事实上非常easy
查看>>
转:C# 通过委托更新UI(异步加载)
查看>>
Flex数据绑定陷阱(一)
查看>>
openstack shelve/unshelve/stop浅析
查看>>
开涛spring3(6.3) - AOP 之 6.3 基于Schema的AOP
查看>>
Dynamic Library Design Guidelines
查看>>
经常使用的正則表達式归纳—JavaScript正則表達式
查看>>