1 条题解
-
1
#include<bits/stdc++.h> using namespace std; const int N=1010; int g[N][N]; //g[a][b]=1 表示a和b之间有关系 bool st[N]; //st[i]=1 表示i已经被加到了某个家庭里面 int main() { int cnt=0,maxv=0; //cnt表示家庭个数,maxv表示家庭的最大人数 int n,k; cin>>n>>k; for(int i=1;i<=k;i++) { int a,b; cin>>a>>b; g[a][b]=g[b][a]=1; } for(int i=1;i<=n;i++) { if(!st[i]) //第i个人还没有被加入到某个家庭 { queue<int> q; q.push(i); int pcnt=1; //当前家庭的人数 cnt++; //家庭人数增加一个 st[i]=1; while(q.size()) { int t=q.front(); q.pop(); for(int j=1;j<=n;j++) { if(!st[j]&&g[t][j]) //j没有被加入到某个家庭且t和j有关系 { st[j]=1; q.push(j); pcnt++; } } } maxv=max(maxv,pcnt); //更新某个家庭的最多人数 } } cout<<cnt<<" "<<maxv<<endl; return 0; }
- 1
信息
- ID
- 294
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 13
- 已通过
- 6
- 上传者