【BZOJ 3376】[Usaco2004 Open]Cube Stacking 方块游戏 带权并查集
2017-09-20 12:24
555 查看
这道题一开始以为是平衡树结果发现复杂度过不去,然后发现我们一直合并而且只是记录到最低的距离,那么就是带权并查集了,带权并查集的权一般是到根的距离,因为不算根要好打,不过还有一些其他的,具体的具体打。
#include <cstdio> #include <cstring> const int N=30050; int h ,f ,size ; 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 方块游戏 带权并查集
- bzoj3376 [Usaco2004 Open]Cube Stacking 方块游戏
- BZOJ 3376: [Usaco2004 Open]Cube Stacking 方块游戏
- POJ 1988/bzoj3376[Usaco2004 Open]Cube Stacking 方块游戏
- bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏
- 3376: [Usaco2004 Open]Cube Stacking 方块游戏(带权并查集)
- 3376: [Usaco2004 Open]Cube Stacking 方块游戏
- bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏 — 带权并查集
- BZOJ 3379: [Usaco2004 Open]Turning in Homework 交作业
- bzoj 3379: [Usaco2004 Open]Turning in Homework 交作业
- bzoj 3379: [Usaco2004 Open]Turning in Homework 交作业(区间DP)
- 【BZOJ4579】[Usaco2016 Open]Closing the Farm【并查集】【离线】
- [BZOJ4579][Usaco2016 Open]Closing the Farm(并查集)
- BZOJ[3378][Usaco2004 Open]MooFest 狂欢节 树状数组
- 【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业 DP
- bzoj 3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(状压+BFS)
- bzoj 3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦(加权并查集)
- [BZOJ3362][Usaco2004 Feb]Navigation Nightmare 导航噩梦(加权并查集)
- BZOJ_2443_[Usaco2011 Open]奇数度数 _并查集+树形DP
- bzoj 3382: [Usaco2004 Open]Cave Cows 3 洞穴里的牛之三(切比雪夫距离)