[CSP-S模拟测试]:小P的生成树(数学+Kruskal)

Posted wzc521

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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(1leqslant u,vleqslant n,-1000leqslant a,bleqslant 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$解释:

显然,从该图三条边中任取两条便可以构成一棵生成树,这三棵生成树的边权之和分别为$z_1=3+5i,z_2=4+4i,z_3=5+3i$,其中$|z_2|=sqrt{32}<|z_1|=|z_3|=sqrt{34}$。

以上是关于[CSP-S模拟测试]:小P的生成树(数学+Kruskal)的主要内容,如果未能解决你的问题,请参考以下文章

[CSP-S模拟测试]:小Y的图(最小生成树+LCA)

[CSP-S模拟测试]:小P的单调数列(树状数组+DP)

[CSP-S模拟测试]:Permutation(线段树+拓扑排序+贪心)

csp-s模拟测试92

[CSP-S模拟测试]:小W的魔术(数学 or 找规律)

[CSP-S模拟测试]:Seat(概率DP+数学)