并查集是一种树形数据结构,用于处理一些不相交的集合元素的合并以及查询。并就是合并,查就是查找。常常在使用中以森林表示。
例如:有四个元素A、B、C、D,其中A和B相连,B和C相连,C和D相连,判断A和D,A和C,B和D是否相连。
使用并查集解决方法:首先合并,将四个元素按规则合并,每个元素都设置一个父亲节点,如果父亲节点又有父亲,则更新父亲节点为父亲节点的父节点,如果父亲节点的父亲节点又有父节点,则再次更新,直到祖先节点没有父节点为止。初始化设每个节点的父亲节点为自己。到最后,判断两个节点是否相连只需查找两节点的父节点是否相同,若相同,则相连,否则不相连。
例题:Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each other, and all the friends do not want to stay with strangers.