左偏树模板
struct tree
{
int l,r,w,d;
}t[N];
int merge(int k1,int k2)
{
if(k1==0||k2==0)return k1+k2;
if(t[k1].w>t[k2].w)swap(k1,k2);
t[k1].r=merge(t[k1].r,k2);
if(t[t[k1].l].d<t[t[k1].r].d)swap(t[k1].l,t[k1].r);
t[k1].d=t[t[k1].r].d+1;
return k1;
}

浙公网安备 33010602011771号