是否路径压缩的差别真大!

P3367 【模板】并查集

史强 @ 2020-01-10 10:33:51

最近一直在练习并查集

p.s.:各位大佬能推荐点题目么?

但是

是否路径压缩的差别真的大!

压缩前:

#include <bits/stdc++.h>
using namespace std;

struct unionfind
{
    int bin[10005];

    unionfind()
    {
        for(int i=1;i<=10002;i++)
        {
            bin[i]=i;
        }
    }

    int anc(int x)
    {
        if(bin[x]==x)
        return x;
        else
        return anc(bin[x]);
    }//return anc(bin[x]);

    void uni(int x,int y)
    {
        bin[anc(x)]=anc(y);
    }
    void ask(int x,int y)
    {
        if(anc(x)==anc(y))
        {
            cout<<"Y"<<endl;
        }
        else
        {
            cout<<"N"<<endl;
        }
    }
};

unionfind u;

int main(void)
{
    int n,m;
    int z,x,y;
    cin>>n>>m;
    while(m--)
    {
        cin>>z>>x>>y;
        if(z==1)u.uni(x,y);
        else
        if(z==2)u.ask(x,y);
    }
    return 0;
}

码风与众不同

结果:点我

震惊:与ta一样

于是改了一下

(代码在此不展示,各位大佬应该明白)

评测结果:点我

是否路径压缩的差别真的大!


by zhy137036 @ 2020-01-10 16:46:19

@yurzhang 原来并查集叫“不相交集合”orz

翻译的太。。


by yurzhang @ 2020-01-10 16:48:00

并查集只能处理不相交集合啊,翻译没有问题吧


by 史强 @ 2020-01-12 11:07:56

@水比田昭寿 thanks


上一页 |