BZOJ 3376[Usaco2004 Open]Cube Stacking 方块游戏 带权并查集
Posted TS_Hugh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 3376[Usaco2004 Open]Cube Stacking 方块游戏 带权并查集相关的知识,希望对你有一定的参考价值。
这道题一开始以为是平衡树结果发现复杂度过不去,然后发现我们一直合并而且只是记录到最低的距离,那么就是带权并查集了,带权并查集的权一般是到根的距离,因为不算根要好打,不过还有一些其他的,具体的具体打。
#include <cstdio> #include <cstring> const int N=30050; int h[N],f[N],size[N]; char s[2]; inline int find(int x){ if(f[x]==x)return x; int temp=f[x];f[x]=find(f[x]); if(temp!=f[x])h[x]+=h[temp]; return f[x]; } inline void Unit(int x,int y){ h[find(x)]=size[find(y)]; size[find(y)]+=size[find(x)]; f[find(x)]=find(y); } int main(){ int T,x,y;scanf("%d",&T); for(int i=0;i<N;i++)f[i]=i,size[i]=1,h[i]=0; while(T--){ scanf("%s",s); if(s[0]==‘M‘)scanf("%d%d",&x,&y),Unit(x,y); else scanf("%d",&x),find(x),printf("%d\n",h[x]); } }
以上是关于BZOJ 3376[Usaco2004 Open]Cube Stacking 方块游戏 带权并查集的主要内容,如果未能解决你的问题,请参考以下文章
[bzoj3378][Usaco2004 Open]MooFest 狂欢节_树状数组
Bzoj 3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一
bzoj3381[Usaco2004 Open]Cave Cows 2 洞穴里的牛之二*
BZOJ3379[Usaco2004 Open]Turning in Homework 交作业 DP