hdu 3635题意分析

其实这就是一个并查集的应用。每个龙珠对应一个并查集的初始节点,然后用每个连通分量的根节点来维护num[i]即当前分量中的节点总数),fa[i]表第i个节点的父节点编号。dist[i]表第i个节点到其父节点的距离(即第i个节点一共被转移了几次才连接上它当前的父节点的

       龙珠被转移的次数就是该龙珠距离根节点的距离。初始dist[i]0.每当合并两个连通分量的时候,被合并的连通分量的dist值要置为1。执行findset操作时,子节点的dist要加上父节点的dist值。

       现在有个问题:如果2龙珠被转移了50次且3龙珠被转移了50次,现在执行T2 3命令,是不是执行了命令之后2龙珠会被认为转移了101次呢?

       不会的,因为2龙珠就算被转移到了3龙所在的城市,2龙珠也不是挂在3龙珠下面,而是3龙珠所属连通分量根节点下面,这个根节点一定是被转移了0次的。

       如果我们要求i节点被转移了几次才被转移到当前连通分量的,我们只需要先findseti)操作,然后dist[i]的值就是我们所求。(想想为什么

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值