1 条题解
-
0
简单求解集合数即可
#include <bits/stdc++.h> using namespace std; int n,m,q,fa[5010]; int find(int x){ if (x!=fa[x])fa[x]=find(fa[x]); return fa[x]; } void merge(int x,int y){ int tx=find(x); int ty=find(y); if (tx!=ty)fa[tx]=ty; } int main(){ while (true){ cin>>n; if (n==0)break; cin>>m; for (int i=1;i<=n;i++)fa[i]=i; int x,y; for (int i=1;i<=m;i++){ cin>>x>>y; merge(x,y); } int c=0; for (int i=1;i<=n;i++){ if (fa[i]==i)c++; } cout<<c-1<<endl;//要-1 } return 0; }
- 1
信息
- ID
- 918
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 23
- 已通过
- 17
- 上传者