本次课程设计要求在n个城市之间架设n-1条线路,实现这几个城市之间的网络通信,要求网络经济代价最低。具体要求如下:
根据设计要求,我们假设城市之间的距离越大架设网线的经济代价越大,因此可以用两个城市之间的距离作为边的权重。
n个城市之间最多可以生成 1+2+...+(n-1)条边,分别计算出每条边的长度然后对他们进行升序排序,利用并查集得到由n-1条边组成的最小生成树,问题便得到解决。
为了解决上述问题,需要构建一个城市结构体CITY来表示城市,并且还需要构建EDGE结构体来表示城市与城市的边,并利用随机函数生成城市的坐标。
本课程设计的全部代码如下:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<math.h>
#define MaxSize (10000)//n的取值最大为MaxSize
/*---------------------结构体定义---------------------*/
typedef struct City{
//城市结构体
int id;//城市ID
int x, y;//城市的坐标
}CITY;