[CSP-S模拟测试]:小P的生成树(数学+Kruskal)
题目描述 小$P$是个勤于思考的好孩子,自从学习了最大生成树后,他就一直在想:能否将边权范围从实数推广到复数呢?可是马上小$P$就发现了问题,复数之间的大小关系并没有定义。于是对于任意两个复数$z_1,z_2$,小$P$定义$z_1<z_2$当且仅当$|z_1|<|z_2|$。 现在,给出一张$n$个点$m$条边的简单无向带权图,小$P$想问你,如果按照他对复数大小的定义,这个图的最大生成树是什么? 输入格式 输入的第一行为两个正整数$n$和$m$,分别表示这个无向图的点数和边数。 接下来$m$行,每行四个整数$u,v,a,b(1\leqslant u,v\leqslant n,-1000\leqslant a,b\leqslant 1000)$,表示点$u$与点$v$之间有一条无向边,边权为$a+bi$。 输出格式 输出仅有一个实数,它等于所有的最大生成树中所有边权之和的模长。 实数四舍五入,保留六位小数。 样例 样例输入1: 3 3 1 2 1 3 2 3 2 2 3 1 3 1 样例输出1: 5.830952 样例输入2: 6 9 1 2 4 -1 2 3 4 1 3 4 -1 -5 1 5 -4 0 4 6 1 -6 2 6 -6 0 5 6 -7 5 2 4 7 1 1 4 -9 -5 样例输出2: 27.459060 数据范围与提示 样例$1