Java教程

并查集我知不道

本文主要是介绍并查集我知不道,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <iostream>
using namespace std;
int set[10];
int find(int x)//找x的祖先 
{
    if(set[x]==x)
        return x;
    return set[x]=find(set[x]);//把x的各个祖先的双亲都置最久远的祖先 
}
void dispSet(int n)
{
    for(int i=0; i<n; i++ )
        cout<<set[i]<<'\t';
    cout<<endl;
}
int main()
{
    int n=10,x,y,anx,any;
    for(int i=0; i<n; i++)
        set[i]=i;
    dispSet(n);
    while(cin>>x>>y) {

        anx=find(x);
        any=find(y);
        set[anx]=any;//x,y祖先之间建立起关系,让祖先唯一 
        cout<<"x's ancestor is "<<find(x)<<endl;
        cout<<"y's ancestor is "<<find(y)<<endl;
        dispSet(n);
    } 
}

 

这篇关于并查集我知不道的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!