哪里错了

P3366 【模板】最小生成树

应该是最后 ~~~ for(int i=1;i<=n;i++){ if(d[i]==0x3f3f3f3f){ ans=-1; break; } ans+=d[i]; } ~~~ 不应该在这里用这种方式计算最小生成树的大小。因为n个点中,若有最小生成树则一定有且仅有n-1条边。那么对于 i:1->n的循环,除非那一条没连上的边恰好在最后,则一定进入if,使得ans=-1. 综上,正确的办法应该是在 prim 算法函数中进行计算与判断
by smll_wlm @ 2024-02-20 16:30:47


@[smll_wlm](/user/748520) 谢谢
by emo_zkt @ 2024-02-20 20:43:48


|