首页 > 代码库 > [模板]左偏树

[模板]左偏树

可并堆

可以支持合并的堆.

/*大根堆*/struct heap{    int l,r,w;}h[N];int rt[N];//第i个堆的根的下标 /*合并以x,y为根的堆*/inline int merge(int x,int y){    int t;    //其中一个堆为空     if(!x||!y) return x+y;        //使得x,y两个根中x大     if(h[x].w<h[y].w){        int t=x;x=y;y=t;    }        //保持堆两边的平衡     h[x].r=merge(y,h[x].r);    t=h[x].l;h[x].l=h[x].r;h[x].r=t;    return x;}inline int pop(int x){    int l=h[x].l,r=h[x].r;    h[x].l=h[x].r=h[x].w=0;    return merge(l,r);}inline int top(x){    return h[x].w; }

[模板]左偏树