【RQNOJ】【图论】发明测试数据
来源:互联网 发布:饼干的网络意思 编辑:程序博客网 时间:2024/04/30 04:36
题目描述
题目背景
出题目是一件很费力的事,为一道题出数据则是更加令人痛苦的事情。Wish 现在正在帮一些学弟学妹们出一些信息学竞赛的基础题,但在出数据的过程中遇到了一些棘手的问题……
Wish 出的题目是:找出给定带权图图的最小生成树,为了加大一点难度,给定的图均为无向完全图(即任意两个点均连一条边),并且 Wish 希望这个图中各边的权值尽可能大。
Wish 制作测试数据的方法比较特别,他是先生成一个树,然后再向这个树中加边来构造完全图。但是他发现他的程序有些问题,有的时候最后生成的图的最小生成树并不是开始给定的那个。
由于已经生成了很多组数据,为了检测出哪些数据有问题,他想让你计算出给定的树可构造出的完全图的最小边权值和是多少,于是生成的小于这个和的图的数据就可以筛去了。
题目描述
给定一个树 T,找出一个无向完全图 G,使得 T 是 G 的最小生成树,并且 G 各边的权值之和尽可能小,输出这个最小权值和即可。
输入格式
每个测试点包含多组数据,第一行一个数 t,表示共 t 组测试数据。
后接 t 组测试数据。
每组数据之前有一个空行。
每组数据的第一行有一个数 n,表示给定树的节点数(节点编号 1-n)。
之后 n-1 行,每行三个数 ai、bi、wi,表示节点 ai 和 bi 之间连有一条边,其权值为 wi。
数据范围
1 <= t <= 20
1 <= n <= 15000
1 <= ai, bi <= n
1 <= wi <= 10000
输出格式
对于每组测试数据,输出一行,表示求出的最小权值和。
样例输入
样例输出
三维状态图像
首先,定义一些符号:输入中给出的树记作T。我们要寻找的图记作G。如果u和v是G(同时也是T)中的节点,u和v在G(可能是T)中的边记作uv。在T中u和v间的路径记作uTv(这个路径总存在,而且是唯一的,因为T是一棵树)。图G是看起来是怎样的呢?考虑任意两个点a,b,他俩的边ab不在T中。由于G是一个完全图,ab这条边一定在G中。这条边的权值应该是多少?考虑路径aTb中的一些边(我们叫它cd)。如果ab的权不比cd的权大,那么我们可以通过删掉cd添入ab得到一棵新的生成树T0。无疑,T0是图G的一棵权和不比T大的生成树。但是这与T是G的唯一最小生成树相矛盾。
这一切都意味着图G有以下必要条件:不在树T中的每条边ab的权值都应当严格大于路径aTb中每条边的权值。
一个问题就来了:这个条件是否是充分的?答案是肯定的。为了说明这一点,我们考虑图G中一个异于T的一棵生成树U。由于U异于T,它包含一条不在T中的边(ab)。我们从U中去掉边ab得到了两个连通分量(一个包含点a,另一个包含点b)。显然路径aTb必包含一条能把这俩连通分量连接起来的边(cd)。(否则它无法连接a和b)通过加入cd连接连通分量得到一棵新的生成树U0。但是U0的权和小于U的权和,因为ab的权值大于cd的权值。这意味着U不是G的最小生成树。
现在,方法就很清楚了。对于任意边ab不在路径aTb中的点对a和b,我们给ab确定一个满足上述条件的权值。这可以在O(N*N)的时间内完成(N是T的节点数)。其实仿照Kruskal最小生成树算法我们可以得到一个更快的方法。我们把输入的
边按照权值排序。每次添加一条权值为w的边,把两个连通分量合成一个。此时,我们给其他能连接这两个连通分量的点对牵一条权值为w+1的边,这样得到的结果显然与N*N算法的结果相同,但是只需要O(NlogN)的时间。
(来源:http://xujieqi.blog.hexun.com/22087606_d.html)
- 【RQNOJ】【图论】发明测试数据
- 发明
- 【图论】【RQNOJ】产生数
- 【图论】【RQNOJ】恐怖分子
- 【图论】【RQNOJ】智捅马蜂窝
- 【图论】【RQNOJ】寻找代表人
- 【图论】【RQNOJ】拜年
- 【图论】【RQNOJ】拦截匪徒
- 【图论】【RQNOJ】学生运输
- 【图论】【RQNOJ】校园迷宫
- 【图论】【RQNOJ】门票系统
- 【图论】【RQNOJ】最优乘车
- 测试数据
- 测试数据
- 测试数据
- 测试数据
- 测试数据
- 测试数据
- XML文档结构分析(2010072605)
- 段机制轻松体验一
- 超棒的日期控件,JQuery分页
- 排行榜问题 vb
- 快毕业了····
- 【RQNOJ】【图论】发明测试数据
- 【RQNOJ】【图论】宿命的P.S.S
- nx6.0
- windows server 2008 中配置远程桌面
- 配置JAVA JDK
- 小颖安装程序制作专家——我很不满
- 配置JAVA JDK 2
- “无法获得排他锁”错误的解决办法
- 以 2、3……16 进制输出一无符号整型数