模板题,求最大的连通分量的成员数量。
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
const int MAXN=30002;
bool visited[MAXN];
vector<int> g[MAXN];
int T,N,M,cnt=0;
void dfs(int v){
visited[v]=true;
cnt++;
for(int i=0;i<g[v].size();i++){
int to=g[v][i];
if(!visited[to])
dfs(to);
}
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&M);
int u,v;
for(int i=1;i<=N;i++)
g[i].clear();
memset(visited,0,sizeof(visited));
for(int i=1;i<=M;i++){
scanf("%d%d",&u,&v);
g[u].push_back(v);
g[v].push_back(u);
}
int ans=0;
for(int i=1;i<=N;i++)
if(!visited[i]) {
dfs(i);
ans=max(ans,cnt);
cnt=0;
}
printf("%d\n",ans);
}
return 0;
}