通信网建设(最小生成树)

描述

某国有n座城市,需要在这n座城市之间建造有线通信网络使得任意两座城市都可以互相通讯,任意两座城市之间要修建通信线路的费用都是大于0的整数。现在请你帮助设计一个通信网络,使得总的造价最低。

测试集保证给定的网络是一个连通图。

比如有5个城市,共有8条边,城市编号以及通信线路的造价如下:

(1 2 2),(1 3 12),(2 3 8),(2 5 9),(4 1 10),(4 3 6),(5 3 3),(5 4 7),

最低造价是19

格式

输入格式

一共有e+1行。第一行两个正整数,分别是n(城市数,1<≤n≤100)和e(边数)。
以下e行,每行3个数,分别是:i,j,wij(1≤wij≤100),表示在城市i和j之间修建通信线路的造价。

输出格式

一个正整数,表示所需的最低造价

样例

输入样例

5 10
1 2 22
1 3 6
1 4 3
1 5 63
2 3 47
2 4 68
2 5 56
3 4 82
3 5 38
4 5 38

输出样例

69

限制

时间限制:100 ms

内存限制:16384 KB

通信网络规划的最短路径(最小生成树的2种算法介绍)

最小生成树之城市规划

#include 
#include 
#include 
using namespace std;

struct network{
	int x;
	int y;
	int weight;
} net[10005];
int ans=0, n, e;
int father[105];

bool compare(const network n1, const network n2) {
	return n1.weight < n2.weight;
}

int findFather(int num) {
	while (father[num] != num) {
		num = father[num];
	}
	return num;
}

void kruskal() {
	for (int i=0; i

 

 

你可能感兴趣的:(#最小生成树,#图,数据结构与算法)