https://vjudge.net/problem/UVA-10608
#include<cstring>
#include <iostream>
#include<algorithm>
#include<string>
#include<sstream>
#include<vector>
using namespace std;
const int N=3e4+10;
int s[N];
int set[N];
int set_find(int p){
if(set[p]==-1)return p;
else return set[p]=set_find(set[p]);
}
int main(){
int z;
scanf("%d",&z);
while(z--){
int n,m;
scanf("%d%d",&n,&m);
fill(&s[0],&s[0]+n+2,1);
memset(set,-1,sizeof(set));
int p,q;
while(m--){
scanf("%d%d",&p,&q);
p=set_find(p);
q=set_find(q);
if(p!=q){
set[p]=q;
s[q]+=s[p];
}
}
int mm=1;
for(int i=0;i<=n;i++)
if(s[i]>mm)mm=s[i];
printf("%d\n",mm);
}
return 0;
}