prime算法的基本思想
1.清空生成樹,任取一個頂點加入生成樹
2.在那些一個端點在生成樹裏,另一個端點不在生成樹裏的邊中,選取一條權最小的邊,將它和另一個端點加進生成樹
3.重複步驟2,直到所有的頂點都進入了生成樹爲止,此時的生成樹就是最小生成樹
int prime(int cur)
{
int index;
int sum = 0;
memset(visit, false, sizeof(visit));
visit[cur] = true;
for(int i = 0; i < m; i ++){
dist[i] = graph[cur][i];
}
for(int i = 1; i < m; i ++){
int mincost = INF;
for(int j = 0; j < m; j ++){
if(!visit[j] && dist[j] < mincost){
mincost = dist[j];
index = j;
}
}
visit[index] = true;
sum += mincost;
for(int j = 0; j < m; j ++){
if(!visit[j] && dist[j] > graph[index][j]){
dist[j] = graph[index][j];
}
}
}
return sum;
}