题目链接
思路:最小生成树问题,我们直接利用kruskal算法。即将所有边按照权重从小到大排列,每次挑选其中权重最小的边生成树,并且每次挑选时要筛去选择该边会形成回路的边,利用并查集即可,若在并查集中两点同根,即两点连通,则选择连接两点的边会形成回路.
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAX = 3e3;
struct edge {
int v, t, w;
edge(int a, int b, int c) {
v = a; t = b; w = c; }
edge() {
};
}e[MAX];
int N, M