频道栏目
首页 > 资讯 > 其他 > 正文

bzoj 3376: [Usaco2004 Open]Cube Stacking 方块游戏 带权并查集

17-08-10        来源:[db:作者]  
收藏   我要投稿

题意

bzoj 3376: [Usaco2004 Open]Cube Stacking 方块游戏 带权并查集,约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱.
游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种:
1.移动(M):将包含X的立方柱移动到包含Y的立方柱上.
2.统计(C):统计名含X的立方柱中,在X下方的方块数目.
写个程序帮贝茜完成游戏.

分析

直接上带权并查集即可。

代码

#include
#include
#include
#include
#include
using namespace std;

const int N=30005;

int dis[N],m,f[N],size[N];

int get_dis(int x)
{
    int ans=0;
    while (f[x]!=x) ans+=dis[x],x=f[x];
    return ans+dis[x];
}

int find(int x)
{
    while (f[x]!=x) x=f[x];
    return x;
}

void merge(int x,int y)
{
    int fx=find(x),fy=find(y);
    if (size[fx]
        
   
相关TAG标签
上一篇:【Leetcode】【python】Container With Most Water
下一篇:flex布局
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站