1 条题解

  • 0
    @ 2026-10-25 18:36:58

    思路

    无向关系的传递闭包,输出分量数及最大大小,孤立点也成家族,重复关系不重复扣减。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    vector<int>p,sz;int f(int x){return p[x]==x?x:p[x]=f(p[x]);}int main(){int n,k;cin>>n>>k;p.resize(n+1);iota(p.begin(),p.end(),0);sz.assign(n+1,1);int cnt=n;while(k--){int a,b;cin>>a>>b;a=f(a);b=f(b);if(a!=b){p[b]=a;sz[a]+=sz[b];cnt--;}}int best=1;for(int i=1;i<=n;i++)if(f(i)==i)best=max(best,sz[i]);cout<<cnt<<' '<<best<<'\n';}
    
    • 1

    信息

    ID
    1395
    时间
    1000ms
    内存
    64MiB
    难度
    普及−
    标签
    递交数
    1
    已通过
    1
    上传者