1. 程式人生 > >初步認識,合並集(樹)

初步認識,合並集(樹)

div void 圖片 pac png ring nbsp 是否 int

技術分享圖片

#include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; int fx,fy,a[1001]={0}; int find(int x){ if(a[x]==x) return x; else return find(a[x]); } void combine(int x,int y){ fx=find(x); fy
=find(y); if(fx!=fy) a[fx]=fy; } int main(void) { int t,i; while(cin>>t){ while(t--){ int n,m; cin>>n>>m; for(i=1;i<=n;i++) a[i]=i; while(m--){ int a,b; cin
>>a>>b; combine(a,b); } int count=0; for(i=1;i<=n;i++) if(a[i]==i) count++; cout<<count<<endl; } } return 0; }

過程:
將認識的人分為一堆,有多少堆就有多少table

分堆的過程中 判斷根節點是否相同,不同就將根節點合並;

初步認識,合並集(樹)