@[wsm000](/space/show?uid=32196)
```cpp
d[x]+=d[f[x]];
f[x]=find(f[x]);
```
这两句话必须调换位置,如果先更新d数组,就会导致d[x]加上未更新的d[f[x]];而题解中的写法先更新了d[f[x]],保证了d[x]是通过已经更新的d[f[x]]而更新的。
by Marser @ 2018-07-02 11:44:37
@[Marser](/space/show?uid=17930) 妙啊
by d3NtMDAw @ 2018-07-02 18:54:32