hdu 1512Monkey King 左偏树
来源:互联网 发布:淘宝店如何做代销 编辑:程序博客网 时间:2024/04/30 15:28
#include<stdio.h>
struct node
{
int v;
int l;
int r;
int f;
int dis;
}o[100010];
int find(int n)
{
while (o[n].f!=n) n=o[n].f;
return n;
}
int mer(int a,int b)
{
if (a==0) return b;
if (b==0) return a;
int t;
if (o[a].v<o[b].v) {
t=a;a=b;b=t;
}
o[a].r=mer(o[a].r,b);
int ll=o[a].l,rr=o[a].r;
o[rr].f=a;
if (o[ll].dis<o[rr].dis) {
t=o[a].l;o[a].l=o[a].r;o[a].r=t;
}
if (o[a].r==0) o[a].dis=0; else o[a].dis=o[o[a].r].dis+1;
return a;
}
int droot(int n)
{
int ll=o[n].l,rr=o[n].r;
o[ll].f=ll;
o[rr].f=rr;
o[n].l=0;o[n].r=0;o[n].dis=0;
return mer(ll,rr);
}
void mix(int a,int b)
{
o[a].v/=2;
o[b].v/=2;
int ll=droot(a),rr=droot(b);
ll=mer(ll,a);
rr=mer(rr,b);
ll=mer(ll,rr);
printf("%d\n",o[ll].v);
}
int main()
{
int i,x,y,a,b,n,m;
while (~scanf("%d",&n)) {
for (i=1;i<=n;i++) {
scanf("%d",&o[i].v);
o[i].f=i;
o[i].l=0;
o[i].r=0;
o[i].dis=0;
}
scanf("%d",&m);
for (i=1;i<=m;i++) {
scanf("%d%d",&x,&y);
a=find(x);b=find(y);
if (a==b) printf("-1\n"); else {
mix(a,b);
}
}
}
return 0;
}
struct node
{
int v;
int l;
int r;
int f;
int dis;
}o[100010];
int find(int n)
{
while (o[n].f!=n) n=o[n].f;
return n;
}
int mer(int a,int b)
{
if (a==0) return b;
if (b==0) return a;
int t;
if (o[a].v<o[b].v) {
t=a;a=b;b=t;
}
o[a].r=mer(o[a].r,b);
int ll=o[a].l,rr=o[a].r;
o[rr].f=a;
if (o[ll].dis<o[rr].dis) {
t=o[a].l;o[a].l=o[a].r;o[a].r=t;
}
if (o[a].r==0) o[a].dis=0; else o[a].dis=o[o[a].r].dis+1;
return a;
}
int droot(int n)
{
int ll=o[n].l,rr=o[n].r;
o[ll].f=ll;
o[rr].f=rr;
o[n].l=0;o[n].r=0;o[n].dis=0;
return mer(ll,rr);
}
void mix(int a,int b)
{
o[a].v/=2;
o[b].v/=2;
int ll=droot(a),rr=droot(b);
ll=mer(ll,a);
rr=mer(rr,b);
ll=mer(ll,rr);
printf("%d\n",o[ll].v);
}
int main()
{
int i,x,y,a,b,n,m;
while (~scanf("%d",&n)) {
for (i=1;i<=n;i++) {
scanf("%d",&o[i].v);
o[i].f=i;
o[i].l=0;
o[i].r=0;
o[i].dis=0;
}
scanf("%d",&m);
for (i=1;i<=m;i++) {
scanf("%d%d",&x,&y);
a=find(x);b=find(y);
if (a==b) printf("-1\n"); else {
mix(a,b);
}
}
}
return 0;
}
1 0
- hdu 1512 Monkey King 左偏树
- hdu 1512Monkey King 左偏树
- HDU 1512 Monkey King 左偏树
- hdu 1512 Monkey King 左偏树
- 【HDU】1512 Monkey King 左偏树
- HDU 1512 Monkey King(左偏树)
- 左偏树 Monkey King HDU-1512
- hdu 1512 Monkey King
- 【HDU 1512】Monkey King
- hdu 1512 Monkey King
- HDU 1512 Monkey King
- HDU 1512 Monkey King
- HDU-1512-Monkey King
- Hdu 1512 Monkey King 左偏树 解题报告
- HDU 1512 Monkey King(左偏树)
- HDU 1512 Monkey King(左偏堆)
- [hdu-1512]Monkey King 题解
- HDU Monkey King(左偏树)
- 【SDOI2015第1轮第2试】星际战争
- HDU4340 Capturing a country 树形dp
- springmvc 使用 @RequestBody接收参数
- 第九周 【项目4.1-广义表算法库及应用】
- 最高人民法院关于适用《中华人民共和国婚姻法》若干问题的解释
- hdu 1512Monkey King 左偏树
- Java之——实现与JS相同的Des加解密算法
- mysql存储过程、触发器、事物高级应用
- PHP的SESSION机制
- Segmentation fault (core dumped)
- Lua源码赏析_lexical词法分析
- hdu1348 Wall (求凸包周长)
- 杭电-5533Dancing Stars on Me
- 第十四周实践项目三--验证是否为BST