初学并查集,有请大佬指教我这个萌新T^T 不太清楚怎么理解反集的处理
查看原帖
初学并查集,有请大佬指教我这个萌新T^T 不太清楚怎么理解反集的处理
257348
theHermit楼主2020/8/26 21:27

为啥不能是 f[find(b)]=find(a+n)

如题 1,2处反过来就是错的,

因为[1,n]中指向了[n+1,2*n]

但这怎么理解呢

    for(int i=1;i<=2*n;i++){
        f[i]=i;//初始化,千万不能漏
    }
    for(int i=1;i<=m;i++){
        cin>>ch>>a>>b;
        if(ch=='F'){
            f[find(a)]=find(b);//合并
        }else{
        //1
            f[find(a+n)]=find(b);
        //2
            f[find(b+n)]=find(a);//反集合并
        }
    }
    
2020/8/26 21:27
加载中...