Prim's Algorithm
プリムのアルゴリズム, プリム法
Program
#define
typedef struct {
double x;
double y;
bool used;
} Prim;
int n, usedp;
Prim data[MAX];
double result;
void prim() {
double small, len;
int small_index;
data[0].used = true;
result = 0.0;
for(int usedp = 1 ; usedp < n ; usedp++) {
small = -1.0;
for(int i = 0 ; i < n ; i++) {
if(data[i].used) {
for(int j = 0 ; j < n ; j++) {
if(!data[j].used) {
len = sqrt(pow(data[i].x - data[j].x, 2.0) +
pow(data[i].y - data[j].y, 2.0));
if(small == -1.0 || len < small) {
small = len;
small_index = j;
}
}
}
}
}
result += small;
data[small_index].used = true;
}
}