1 条题解

  • 1
    @ 2023-11-25 15:37:13
    #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
    上传者