参考:https://blog.csdn.net/wxh010910/article/details/55806735

以下课件,可并堆部分写的左偏树









#include<iostream>
#include<cstdio>
using namespace std;
const int N=600005;
int n,m,tot,fa[N],len[N],rt[N],d[N],cnt;
long long p[N],sum;
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
struct qwe
{
int l,r,dis;
long long v;
}e[N];
int hb(int x,int y)
{
if(!x||!y)
return x+y;
if(e[x].v<e[y].v)
swap(x,y);
e[x].r=hb(e[x].r,y);
if(e[e[x].l].dis<e[e[x].r].dis)
swap(e[x].l,e[x].r);
if(!e[x].r)
e[x].dis=0;
else
e[x].dis=e[e[x].r].dis+1;
return x;
}
int pop(int x)
{
return hb(e[x].l,e[x].r);
}
int main()
{
n=read(),m=read();
for(int i=2;i<=n+m;i++)
{
fa[i]=read(),len[i]=read();
sum+=len[i];
d[fa[i]]++;
}
for(int i=m+n;i>1;i--)
{
long long l=0,r=0;
if(i<=n)
{
while(--d[i])
rt[i]=pop(rt[i]);
r=e[rt[i]].v;
rt[i]=pop(rt[i]);
l=e[rt[i]].v;
rt[i]=pop(rt[i]);
}
e[++tot].v=l+len[i];
e[++tot].v=r+len[i];
rt[i]=hb(rt[i],hb(tot,tot-1));
rt[fa[i]]=hb(rt[fa[i]],rt[i]);
}
while(d[1]--)
rt[1]=pop(rt[1]);
while(rt[1])
p[++cnt]=e[rt[1]].v,rt[1]=pop(rt[1]);
for(int i=1;i<=cnt;i++)
sum-=p[i];
printf("%lld\n",sum);
return 0;
}

最新文章

  1. No plugin found for prefix &#39;mybatis-generator&#39; in the current project
  2. statsd+graphite
  3. [转载]Vivado轻松实现IP封装
  4. CentOS 6忘记密码解决办法,root和普通用户均可
  5. 计算A/3,不用除法
  6. JSONArray遍历
  7. ubuntu查看内存占用和查看cpu使用情况的简单方法(ubuntu内存管理)
  8. BufferedReader,缓冲输入字符流
  9. OC中文件的操作
  10. 源码(06) -- java.util.AbstractList&lt;E&gt;
  11. spring 内部工作机制(二)
  12. 第一节: Timer的定时任务的复习、Quartz.Net的入门使用、Aop思想的体现
  13. 内网IP外网IP的关联及访问互联网原理
  14. MyBatis Generator报错:Cannot instantiate object of type
  15. 跟angular2学一键开启项目--关于上个react-redux项目的一键调试
  16. [TensorFlow笔记乱锅炖] tf.multinomial(logits, num_samples)使用方法
  17. maven仓库设置
  18. oracle之 安装oracle指定jdk 或者如何解决提示框显示不全
  19. 1月4日编程基础hash
  20. mongodb first

热门文章

  1. Python()- 面向对象的组合用法
  2. hdu1875kruskal简单应用。
  3. I NEED A OFFER!---hdu1203(01背包)
  4. 【Perl】perl正则表达式中的元字符、转义字符、量词及匹配方式
  5. 在访问RESTful接口时出现:Could not write content: No serializer found for class的问题解决小技巧收集
  6. Win7中你所应该知道的强制计划关机操作
  7. C# Queue与RabbitMQ的爱恨情仇(文末附源码):Q与MQ消息队列简单应用(二)
  8. Zookeeper 简单操作
  9. wpf 导出Excel Wpf Button 样式 wpf简单进度条 List泛型集合对象排序 C#集合
  10. 【转】如何查看Oracle客户端版本及位数(Windows系统)