1 条题解

  • 0
    @ 2023-10-30 19:41:43
    #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;
    }
    
  • 1

信息

ID
1587
难度
8
分类
(无)
标签
递交数
13
已通过
5
通过率
38%
被复制
8
上传者