应该是最后
~~~
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