为什么不初始化g[i]=i就会MLE?

P3367 【模板】并查集

@[zvagowy](/user/924263) 会无限循环,然后爆栈
by zqy729 @ 2023-08-17 08:29:18


你那个代码,根节点的父亲节点是它自身,所以递归函数永远到不了边界,会无限循环
by zqy729 @ 2023-08-17 08:31:09


@[zqy729](/user/498117) 没初始化的那个递归基础不一样,if(g[x]==0) return x;所以可以结束递归啊,本地样例数据输出是没问题的
by zvagowy @ 2023-08-17 08:42:04


@[zvagowy](/user/924263) 是我的失误。不过你那个代码,g[x]可以直接查询。但是你的代码一无法直接查询,每次查询都会重新从头开始查询,这样会导致复杂度大大提高。
by zqy729 @ 2023-08-17 08:56:41


贴一组数据 data1.in ```c 10 20 1 4 8 1 1 2 1 7 2 2 6 8 1 3 2 2 9 5 1 7 1 2 9 10 1 1 5 2 1 9 1 4 8 2 7 9 2 9 1 2 9 6 2 10 8 1 3 5 1 6 10 1 4 8 2 5 4 1 8 4 ``` data.out ``` N N N N N N N N N ```
by zqy729 @ 2023-08-17 09:01:36


哦哦,谢谢大佬!发现问题了,就是如果合并同一个根节点,会变成g[x]=x,然后就不符合我的递归结束条件了……
by zvagowy @ 2023-08-17 09:46:04


|