[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)的主要内容,如果未能解决你的问题,请参考以下文章