prime模板
核心代码:
for(j = 1; j < n; j++)
{
if(lowcost[j] != 0 && lowcost[j] > dis[choose] [j] )
{
if(lowcost[j] != 0 && lowcost[j] > dis[choose] [j] )
//在这里第一条找到的边是6,那么此时的choose是2,这里的意思就是:
//原点到某一点的距离大于被标记的这一点到其余一点的距离,即使说,原点到这些点都可以更新
//也就是相当于找到2后,然后再更新的时候把1~2的边6给抽掉了,即是说把1~2这条边都当做自己的了
//咦,然后发现3变小了,成了8,哇可以更新!赶紧~~~
lowcost[j] = dis[choose][j];
}
lowcost[j] = dis[choose][j];
}
program:
#include <iostream>
#include <memory>
#include <cm