70分求找错

P1455 搭配购买

wa on #4 #5 #6
by NEO_bone @ 2022-09-16 10:42:53


```cpp for(int i=1;i<=n;i++) { if(fa[i]==i) continue; c[fa[i]]+=c[i]; c[i]=0; d[fa[i]]+=d[i]; d[i]=0; } ``` 改成 ```cpp for(int i=1;i<=n;i++) { if(fa[i]==i) continue; c[fin(i)]+=c[i]; c[i]=0; d[fin(i)]+=d[i]; d[i]=0; } ``` 试试
by Nt_Tsumiki @ 2022-09-16 10:47:37


楼上大概是正解 但是swap是不是写错了啊(
by L_cm_C5H6 @ 2022-09-16 10:50:33


改了一下这里 ```cpp // if(fin(u)>fin(v)) // swap(u,v); if(fin(v)!=fin(u)) c[fin(u)]+=c[fin(v)],d[fin(u)]+=d[fin(v)],fa[fin(v)]=fin(u); ``` 删掉了这里 ```cpp // for(int i=1;i<=n;i++) // { // if(fa[i]==i) // continue; // c[fa[i]]+=c[i]; // c[i]=0; // d[fa[i]]+=d[i]; // d[i]=0; // } ``` 把集合里的元素又新开了一个数组存起来 ```cpp int tot=0; for(int i=1;i<=n;i++) if(fa[i]==i) C[++tot]=c[i],D[tot]=d[i]; } ```
by CeciliaWind @ 2022-09-16 10:59:14


A力(喜) 还是@Nt_Yester靠谱
by NEO_bone @ 2022-09-16 11:06:56


@[jcer_lazy_bone](/user/464094) )
by whitenightdaye @ 2022-09-16 11:29:41


|