【题目描述】
警察抓到了 n 个罪犯,警察根据经验知道他们属于不同的犯罪团伙,却不能判断有多少个团伙,但通过警察的审讯,知道其中的一些罪犯之间相互认识,已知同一犯罪团伙的成员之间直接或间接认识。有可能一个犯罪团伙只有一个人。请你根据已知罪犯之间的关系,确定犯罪团伙的数量。已知罪犯的编号从 1 至 n。
【输入】
第一行:n(<=1000,罪犯数量),第二行:m(<5000,关系数量)以下若干行:每行两个数:I 和 j,中间一个空格隔开,表示罪犯 i 和罪犯 j 相互认识。
【输出】
一个整数,犯罪团伙的数量。
【样例输入】
1181 24 35 41 35 67 105 108 9
【输出】
3
【说明】
共三个犯罪团伙。
===================题解=================
并查集或者dfs均可。
先为所有罪犯创建一个数组来存储他们的父亲,初始化为他们自己的编号,之后读入关系的同时,递归查找二者的父亲,判断两关系中的两人是否有同样的父亲,若有则继续,若没有,则将二人所属集合合并。最后遍历所有犯人,递归查找每人的父亲,并累加不同种类,即为答案。