unn建站百度指数的主要功能有
unn建站,百度指数的主要功能有,免费建站工具,做电商看的网站有哪些当在社交网络注册时#xff0c;你需要指定你的爱好#xff0c;以便找到可能拥有相同爱好的潜在朋友。一个社交聚类是指一组有共同爱好的人。请你找出所有的聚类。输入格式:每个输入文件包含一个测试用例。对于每个测试用例#xff0c;第一行包含正整数 NN#xff08;≤1000…当在社交网络注册时你需要指定你的爱好以便找到可能拥有相同爱好的潜在朋友。一个社交聚类是指一组有共同爱好的人。请你找出所有的聚类。输入格式:每个输入文件包含一个测试用例。对于每个测试用例第一行包含正整数 NN≤1000≤1000表示社交网络中的总人数编号从 1 到 NN。接下来 NN 行每行给出第 ii 个人的爱好列表格式为KiKi: hi[1]hi[1] hi[2]hi[2] ... hi[Ki]hi[Ki]其中 KiKi00是爱好数量hi[j]hi[j] 是第 jj 个爱好的编号为 1 到 1000 的整数。输出格式:对于每个测试用例第一行输出聚类的总数第二行按非增序输出各聚类的成员数量。数字之间用一个空格分隔行末不得有多余空格。样例输入:8 3: 2 7 10 1: 4 2: 5 3 1: 4 1: 3 1: 4 4: 6 8 1 5 1: 4样例输出:3 4 3 1q#includebits/stdc.h using namespace std; int parent[1005]; // parent[i] 表示 i 的父节点用于表示集合 int find(int x) { // 查找 x 所在集合的根代表 return parent[x] x ? x : parent[x] find(parent[x]); } void unite(int a, int b) { // 合并 a 和 b 所在的集合 a find(a); b find(b); if (a ! b) parent[a] b; // 将 a 的根指向 b 的根 } int main() { ios::sync_with_stdio(false); cin.tie(0); int N; cin N; for (int i 1; i N; i) parent[i] i; // 初始化每个人自成一个集合 int hobby_owner[1005] {0}; // hobby_owner[h] 记录爱好 h 最近一次出现的人编号 for (int i 1; i N; i) { int k; char colon; cin k colon; // 正确读取数字和冒号如 3: for (int j 0; j k; j) { int h; cin h; // 读入一个爱好 if (hobby_owner[h] 0) { hobby_owner[h] i; // 该爱好首次出现记录当前人 } else { unite(i, hobby_owner[h]); // 该爱好已有人将当前人和那人合并 } } } // 统计每个集合的人数 mapint, int cnt; for (int i 1; i N; i) { cnt[find(i)]; // 找到 i 的根对应集合人数1 } vectorint sizes; for (auto p : cnt) { sizes.push_back(p.second); } sort(sizes.rbegin(), sizes.rend()); // 降序排列 cout sizes.size() \n; for (size_t i 0; i sizes.size(); i) { if (i) cout ; cout sizes[i]; } return 0; }