对于堆的一个发问

学术版

``` struct heap{ void add(int x,int y){nxt[++id]=headd[x],headd[x]=id,to[id]=y,fa[y]=x;} bool empty(){return !size;} void push(int u,int x) { val[u]=x; size++; if(size==1) root=u; else merge(root,u); } int merge(int x,int y) { if(!x||!y) return x+y; if(val[x]<val[y]) swap(x,y); add(x,y); return x; } void pop() { int t; size--; for(register int i=headd[root];i;i=nxt[i]){ if(fa[to[i]]==root) dui.push(to[i]),fa[to[i]]=0; while(dui.size()>1){ t=dui.front(); dui.pop(); dui.push(merge(dui.front(),t)); dui.pop(); } if(dui.size()) root=dui.front(),dui.pop(); else root=0; } } void modify(int u,int x) { val[u]=x; if(u==root) return ; fa[u]=0; root=merge(u,root); } int top(){return root;} }; ```
by Doubleen @ 2019-01-22 22:13:59


~~我发了4个可并堆的提问都没人,您配对堆就别这样了吧~~
by 樱初音斗橡皮 @ 2019-01-22 22:32:45


@[杨亦诚斗橡皮](/space/show?uid=66287) 左偏树?
by NaCly_Fish @ 2019-01-22 22:35:13


@[NaCly_Fish](/space/show?uid=115864) 恩我是
by 樱初音斗橡皮 @ 2019-01-22 22:37:22


https://www.luogu.org/discuss/show/95252 帮看看我的左偏树
by 樱初音斗橡皮 @ 2019-01-22 22:38:06


@[Doubleen](/space/show?uid=56432) 您取top是要取下标还是取值...以及modify操作不是要判断新值是否大于旧值吗?~~另外我的配对堆modify修了半个月没修好,可能还要大佬帮我看看~~
by 小菜鸟 @ 2019-01-22 22:52:38


巧了我的配对堆也只过了1 3两个点
by 小菜鸟 @ 2019-01-22 23:01:00


|