不多说,很简单,基础题。应该得出一个结论,Prim算法比较适合求稠密图的最小生成树,Kruskal算法比较适合求稀疏图的最小生成树.
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
const int maxn=1002;
const double maxm=2000000;
bool visit[maxn];
int n;
double sum;
double x[maxn],y[maxn],lowcost[maxn],weight[maxn][maxn];
double dist(double x1,double y1,double x2,double y2)
{
return sqrt(pow(x2-x1,2)+pow(y2-y1,2));
}
void Prim(int u)
{
int i,j,k;
double min;
for(i=1;i<=n;i++)
if(i!=u)
lowcost[i]=weight[1][i];
visit[1]=true;
for(i=1;i<n;i++) //最小生成树有n-1条边
{
min=maxm;
for(j=1;j<=n;j++)
if(lowcost[j]<min && !visit[j])
{
min=lowcost[j];
k=j; //记录哪个点与当前最小生成树的距离最小
}