我的数据结构与算法题目集代码仓:https://github.com/617076674/Data-structure-and-algorithm-topic-set
原题链接:https://pintia.cn/problem-sets/15/problems/840
题目描述:
知识点:深度优先遍历、并查集
思路一:深度优先遍历
用set<int> club[]保存每个俱乐部对应的学生信息,用set<int> student[]保存每个学生对应的俱乐部信息。
对M个俱乐部进行深度优先遍历,用bool visited[]数组标记某俱乐部是否已被访问过。
遍历M个俱乐部,如果当前俱乐部未被访问过,则清空set<int> cluster,代表即将加入一个新的学生编号集群,深度优先遍历当前俱乐部编号。
深度优先遍历函数如下:
在visited数组中标记当前节点nowVisit已被访问过,将当前俱乐部的学生加入到cluster中,并遍历当前俱乐部的所有学生,所有学生又遍历其对应的所有俱乐部,一旦发现未访问的俱乐部,即递归调用函数,深度优先遍历该俱乐部。
时间复杂度是O(M * N)。空间复杂度是O(30001)。
C++代码:
#include<iostream&