标签:合并 mil code font 下标 lin back cccccc merge
可并堆
可以支持合并的堆.
/*大根堆*/ 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; }
标签:合并 mil code font 下标 lin back cccccc merge
原文地址:http://www.cnblogs.com/AireenYe/p/6274525.html