• 家庭问题(family)


    家庭问题(family)

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1362
    时间限制: 1000 ms         内存限制: 65536 KB
     

    【题目描述】

    有n个人,编号为1,2,……n,另外还知道存在K个关系。一个关系的表达为二元组(α,β)形式,表示α,β为同一家庭的成员。

    当n,k和k个关系给出之后,求出其中共有多少个家庭、最大的家庭中有多少人?

    例如:n=6,k=3,三个关系为(1,2),(1,3),(4,5)

    此时,6个人组成三个家庭,即:{1,2,3}为一个家庭,{4,5}为一个家庭,{6}单独为一个家庭,第一个家庭的人数为最多。

     

    【输入】

    第一行为n,k二个整数(1≤n≤100)(用空格分隔);

    接下来的k行,每行二个整数(用空格分隔)表示关系。

     

    【输出】

    二个整数(分别表示家庭个数和最大家庭人数)。

    【输入样例】

    6  3
    1  2
    1  3
    4  5
    

    【输出样例】

    3 3
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<queue>
    using namespace std;
    bool a[205];
    int mp[205][205];
    queue <int>Q;
    int n;
    void bfs(int k)
    {
        a[k]=1;
        Q.push(k);
        while(!Q.empty())
        {
            int u=Q.front();
            Q.pop();
            for(int i=1;i<=n;i++)
                if(!a[i]&&mp[u][i])
                {
                    a[i]=1;
                    mp[k][i]=1;
                    Q.push(i);
                }
        }
    }
    int main()
    {
        int k,t=0,ans=0,cnt=1;
        cin>>n>>k;
        for(int i=1;i<=k;i++)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            mp[u][v]=mp[v][u]=1;
        }
        for(int i=1;i<=n;i++)
            if(!a[i])
                bfs(i);
        memset(a,0,sizeof(a));
        for(int i=1;i<=n;i++)
        {
            cnt=1;
            if(!a[i])
            {
                a[i]=1;t++;
                for(int j=i+1;j<=n;j++)
                {
                    if(!a[j]&&mp[i][j])
                        a[j]=1;cnt++;
                } 
                ans=max(ans,cnt);
            }
                
        }
        cout<<t<<" "<<ans<<endl;
    }
  • 相关阅读:
    @@IDENTITY 存储过程
    ASP.NET的Cookie和Session
    数据格式设置表达式
    DataTable类(MSDN)
    用静态变量代替appliction
    C cgi url 编码解码问题
    C#视频头操作
    c#网页抓取
    c语言字符串分隔
    CGI c 上传文件
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/8017908.html
Copyright © 2020-2023  润新知