1 条题解
-
0
C++ :
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #define MAXN 100010 int set[MAXN]; void init() { for(int i=0;i<MAXN;i++) set[i]=i; } int find(int a) { int root=a; int tmp; while(set[root]!=root) root=set[root]; while(set[a]!=root) { tmp=a; a=set[a]; set[tmp]=root; } return root; } bool merge(int a,int b) { int x=find(a); int y=find(b); if(x==y) return false; set[x]=y; return true; } int main() { int a,b; int ans; while(~scanf("%d%d",&a,&b)) { init(); ans=0; merge(a,b); while(~scanf("%d",&a) && a!=-1) { scanf("%d",&b); if(find(a)==find(b)) ans++; else merge(a,b); } printf("%d\n",ans); } return 0; }
- 1
信息
- ID
- 376
- 时间
- 3000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者