1 条题解

  • 0
    @ 2026-10-25 18:48:32

    思路

    在线M合并与Q人数查询,重复/自合并不增加大小,N10万/M20万;区别静态两点关系查询。

    参考程序(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(){ios::sync_with_stdio(false);cin.tie(nullptr);int n,m;cin>>n>>m;p.resize(n+1);iota(p.begin(),p.end(),0);sz.assign(n+1,1);while(m--){char op;int a,b;cin>>op>>a;if(op=='Q')cout<<sz[f(a)]<<'\n';else{cin>>b;a=f(a);b=f(b);if(a!=b){if(sz[a]<sz[b])swap(a,b);p[b]=a;sz[a]+=sz[b];}}}}
    
    • 1

    信息

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