文章
3
粉丝
0
获赞
3
访问
73
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define M 105
#define INF 1e12
typedef struct node {
double x;
double y;
}Node;
typedef struct edge {
int v1;//v1,v2节点下标
int v2;
double dist;
}Edge;
Node list_node[M];
Edge list_edge[M * (M - 1) / 2];
//int visited[M];
int arr[M];//查并集的集
double calc_dist(Node a, Node b) {//计算距离
double dx = a.x - b.x;
double dy = a.y - b.y;
return sqrt(dx * dx + dy * dy);
}
int cmp(const void* a, const void* b) {
Edge* pa = (Edge*)a;
Edge* pb = (Edge*)b;
if (pa->dist > pb->dist)return 1;
else return -1;
}
int find(int x) {
if (x != arr[x]) {
int t = find(arr[x]);
arr[x] = t;
return t;
}
return x;
}
double find_merge(Edge p) {
int v1 = find(p.v1);
int v2 = find(p.v2);
if (v1 == v2)return 0;
arr[v2] = v1;
return p.dist;
}
int main() {
int n;
while (scanf("%d", &n) != EOF && n != 0) {
//1、获取所有节点
...
登录后发布评论
暂无评论,来抢沙发