本文共 1489 字,大约阅读时间需要 4 分钟。
为了找出所有的嫌疑人,我们可以使用并查集(Union-Find)数据结构来高效地解决这个问题。具体来说,每个学生都被看作一个集合,当一个小组包含嫌疑人时,该小组的所有成员都会被合并到一个大集合中。这样,所有在大集合中的学生就是嫌疑人。
步骤解释:
代码实现:
#include#include using namespace std;int find(int a, int parent[]);void union(int a, int b, int parent[], int rank[]);void main() { int n = 0, m = 0; bool hasStudent = false; vector parent(n), rank(n); for(int i=0; i > n_line >> m_line)) break; hasStudent = true; n = n_line; m = m_line; if(n == 0) break; parent.resize(n); rank.resize(n); for(int i=0; i
这个代码使用并查集来高效地处理每个小组,确保所有的嫌疑人都被正确标记。最终统计并输出嫌疑人的数量。
转载地址:http://inzg.baihongyu.com/