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

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 茅场晶彦 @ 2020-01-10 10:38:03

所以说你想表达什么


by 茅场晶彦 @ 2020-01-10 10:38:44

你如果觉得n^2TLE很开心那就继续呗。。。


by forlight @ 2020-01-10 10:42:46

路径压缩的总复杂度是(NlogN),不压缩是(N^2)


by _Blue_ @ 2020-01-10 10:52:48

左转练习场->并查集


by syksykCCC @ 2020-01-10 10:53:23

@forlight 路径压缩不是 n \alpha(n) 吗?


by 茅场晶彦 @ 2020-01-10 10:55:14

@syksykCCC 光路径压缩是log


by chengch @ 2020-01-10 10:57:08

路径压缩加上按秩合并才是O(n\alpha(n))


by xwmwr @ 2020-01-10 11:02:20

NOI2015 程序自动分析

NOI2002 银河英雄传说

NOI2001 食物链

POJ1733 Parity game

NOIP2010 关押罪犯

POJ2912 Rochambeau

另外锣鼓日报好像有介绍路径压缩的文章,可以看一下这一篇


by xwmwr @ 2020-01-10 11:02:28

@史强


by huayucaiji @ 2020-01-10 11:29:37

是很大,路径压缩后,时间复杂度为 反阿克曼函数值,近似于2


| 下一页