洛谷P1196_银河英雄传说:(带权并查集 + 相关注意点)
题目大意:有最多30000个数字,编号为1-30000,提供两种操作,一种是将i那一列,接在j的后面,第二种是查询i,j之间有多少个人。
将i列和j列合并明显是一个普通的并查集维护集合的运用,但是要查询i,j之间有多少人,只用普通并查集维护不相交集合是不够的,需要用到带权并查集。
可以想到:维护每个点到队列头的距离就行了。查询的时候,若i,j同属一列,则abs(dis[i]-dis[j])+1就是...
原创
2019-04-01 08:38:31 ·
167 阅读 ·
0 评论