中英文切换网站开发,网络营销与直播电商,什么网站做视频最赚钱,山东省建设招标信息网站某学校有N个学生#xff0c;形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好#xff0c;形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出#xff0c;如果A和B是朋友#xff0c;且B和C是朋友#… 某学校有N个学生形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出如果A和B是朋友且B和C是朋友则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。 输入格式: 输入的第一行包含两个正整数N≤30000和M≤1000分别代表学校的学生总数和俱乐部的个数。后面的M行每行按以下格式给出1个俱乐部的信息其中学生从1~N编号 第i个俱乐部的人数Mi空格学生1空格学生2 … 学生Mi 输出格式: 输出给出一个整数表示在最大朋友圈中有多少人。 输入样例: 7 4
3 1 2 3
2 1 4
3 5 6 7
1 6 输出样例: 4 #include stdio.h
#include string.h
#include stdlib.hint pre[30005];//记录祖先
int Num[30005];//记录各点的子朋友有多少包括自己
int N,M;int Find(int a){if(pre[a] a)return a;return pre[a] Find(pre[a]);
}void Judge(int a,int b){int A Find(a);int B Find(b);if(A ! B){pre[B] A;Num[A] Num[B];}
}int main(){scanf(%d %d,N,M);for(int i0 ; iN ; i)pre[i] i;for(int i0 ; iN ; i)Num[i] 1;while(M--){int mid;scanf(%d,mid);int a,b;if(mid 1){scanf(%d,a);}else {scanf(%d,a);while(--mid){scanf(%d,b);Judge(a,b);}}}int max 0;for(int i0 ; iN ; i){if(Num[i] max)max Num[i];}printf(%d\n,max);return 0;
}转载于:https://www.cnblogs.com/vocaloid01/p/9514198.html