效能監控
阿新 • • 發佈:2020-07-28
#include <iostream> #define maxn 1005 using namespace std; int fa[maxn]; void init() { for(int i=1;i<maxn;++i) { fa[i]=i; } } int find_ancestor(int x) { if(fa[x]==x) { return x; } return fa[x]=find_ancestor(fa[x]);//用fa[x]=方式,壓縮了路徑 } void and_union(intx,int y) { int fx=find_ancestor(x),fy=find_ancestor(y); if(fx!=fy) { fa[fx]=fy; } } int main() { init();//先進行初始化 cout<<find_ancestor(1)<<endl; cout<<find_ancestor(3)<<endl; if(find_ancestor(1)==find_ancestor(3)){ cout<<"同一個祖先,即位於同一個集合"<<endl; }else{ cout<<"不在同一個集合"<<endl; } and_union(1,3); cout<<find_ancestor(1)<<endl; cout<<find_ancestor(3)<<endl; if(find_ancestor(1)==find_ancestor(3)){ cout<<"同一個祖先,即位於同一個集合"<<endl; }else{ cout<<"不在同一個集合"<<endl; } return 0; }