acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 并查集

    userId_undefined

    这是名字

    时空双修者USACO循环·循环打卡人字符串·魔法使
    14阅读
    0回复
    0点赞
  • 题解

    #include<bits/stdc++.h> using namespace std; int n,m,fa[2001],x,y,sz[10001]; char o; void init() { for(int i=1;i<=2000;i++) { fa[i]=i; sz[i]=1; } } int get(int x) { if(fa[x]x)return x; int r=get(fa[x]); fa[x]=r; return r; } void merge(int x,int y) { int r1=get(x),r2=get(y); if(r1r2) { return; } fa[r1]=r2; sz[r2]+=sz[r1]; return; } int main() { cin>>n>>m; init(); for(int i=1;i<=m;i++) { cin>>o>>x>>y; if(o=='F')merge(x,y); else { merge(y+n,x); merge(x+n,y); } } int ans=0; for(int i=1;i<=n;i++) { if(fa[i]==i)ans++; } cout<<ans<<endl; return 0; }

    userId_undefined

    135****3399

    时间刺客空间掌握者时空双修者倔强青铜
    12阅读
    0回复
    0点赞
首页