朋友
2025-01-22 11:03:45
发布于:上海
#include <bits/stdc++.h>
using namespace std;
int n,m ;
vector<int> g[200010];//创建邻接表
bool vis[200010];
int main (){
cin >> n >> m;
for (int i=1;i<=m;i++){
int u, v;
cin >> u >> v;
g[u].push_back(v);//建图 u-v
g[v].push_back(u);//建图 v-u
}
int ans = 0;
for (int i=1;i<=n;i++){
if (!vis[i]){//如果当前i没有加入连通块
vis[i]=true;
int cnt = 1;//连通块大小
queue<int> q;
q.push(i);
while(q.size()){
int now = q.front();
q.pop();
for(int x:g[now]){
if(vis[x])continue;
q.push(x);
vis[x] = true;
cnt++;
}
}
ans=max(ans,cnt);
}
}
cout << ans << endl;
return 0;
}
这里空空如也
有帮助,赞一个