hdu 3635题意分析

来源:互联网 发布:ketshot 5 mac版破解 编辑:程序博客网 时间:2024/05/21 19:14

其实这就是一个并查集的应用。每个龙珠对应一个并查集的初始节点,然后用每个连通分量的根节点来维护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
原创粉丝点击