简单的并查集
题目
http://poj.org/problem?id=1611
题意
有n个学生和m个团队,学生编号为0~n,一个学生可以属于多个团体。团体内如果有一个学生被怀疑感染了病毒,那么团体内所有学生都会被怀疑感染了病毒,初始时假设只有0号学生被怀疑感染了病毒,问一共有多少人会被怀疑感染了病毒。
题目解析
可以用并查集来解决,首先0号学生属于0号集合,对于每个团体,找到所有成员所在的集合编号,如果有一个成员属于0号集合,则把所有成员都合并到0号集合,如果没有成员属于0号集合,则将所有成员所属的集合合并成一个集合,集合编号任意。
代码
1 | /* http://poj.org/problem?id=1611 */ |