並查集 5-30 tree ------錯誤方法

#include <iostream>
using namespace std;
int fa[100000];// father

int f_u(int x)
{
int root=x;
while(fa[root]!=root) root=fa[root];
while(fa[x]!=x)
{
int y=fa[x];
fa[x]=root;
x=y; 
}
return root;
}

int main()
{
int n,m;
cin>>n>>m;
int x,y;
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
int fx=f_u(x);
int fy=f_u(y); 
if(fx!=fy) fa[fx]=fy;
}
for(int i=1;i<=n;i++) f_u(i);  //不知道爲什麼要多找一次
for(int i=1;i<=n;i++)
cout<<"i="<<i<<" fa="<<fa[i]<<endl;
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章