一些概念:
问题的输入是接收一列整数对,其中每个整数都表示一个某种类型的对象。一对整数pq可以理解为p和q是相连的。假设相连是一种等价关系,等价关系能够将对象分为多个等价类。
可以将对象称之为触点 将整数对称为 连接,将等价类称为联通分量,或分量。
当且仅当两个对象是相连的,他们才属于同一个等价类。
问题
编译程序实现,程序从输入中读取了整数对pq时,如果一直的所有整数都不能说明pq是相连的,那么则将这一对整数写入到输出中。
Union-find算法的API
构造函数UF()用来初始化N个触点
void union(int p, int q)方法用来在qp之间添加一条连接
int find(int p)方法找到p所在分量的标识符
int count ()连同分量的数量
boolean connected(int p , int q)如果p和q存在与同一个分量中,则返回true
实现
union-find算法,布布扣,bubuko.com
时间: 2024-11-10 11:55:17