12分代码求助

P1196 [NOI2002] 银河英雄传说

```cpp int getfa(int x) { if(fa[x]==x)return x; int t=getfa(fa[x]); dis[x]+=dis[fa[x]]; return fa[x]=t; } ```
by wuzhaoxin @ 2018-10-19 21:34:36


@[wuzhaoxin](/space/show?uid=70310) 请问这样做的理由是什么
by Ruff @ 2018-10-19 21:35:49


```cpp void merge(int x,int y) { x=getfa(x),y=getfa(y); fa[x]=y; dis[x]=size[y]; size[y]+=size[x]; } ```
by wuzhaoxin @ 2018-10-19 21:35:59


@[wuzhaoxin](/space/show?uid=70310) 一直想不通
by Ruff @ 2018-10-19 21:36:00


在父节点路径压缩之前父节点的**dis**是错的
by wuzhaoxin @ 2018-10-19 21:37:57


|