“裁枝剪叶”问题,一道 编程竞赛题

时间:2012-05-06 13:22:21
【文件属性】:
文件名称:“裁枝剪叶”问题,一道 编程竞赛题
文件大小:92KB
文件格式:RAR
更新时间:2012-05-06 13:22:21
“裁枝剪叶”问题 文件名:cut.* 输入文件:cut.in(文本文件,选手按规定格式自行创建) 输出文件:cut.out(文本文件) 问题描述: 一个无向连通图中有N个节点,N-1条边,则该图称为“无根树”。无根树中任何两个节点之间有且只有一条包含最少边的路径。 所谓“裁枝剪叶”,就是去掉无根树中的一条边,这样一棵无根树就被分成了两棵无根树,丢掉其中的一棵,还剩一棵;对剩下的一棵再进行“裁枝剪叶”。经过一系列这样的“裁枝剪叶”后,最后剩下一棵无根树。 若开始时给每个节点加一个值。本题的任务就是:通过一系列“裁枝剪叶(也可以什么裁剪都不进行),使剩下的无根树上的节点的值的和最大(注:节点的值可为负值)。 输入格式: 从文本文件cut.in中读入数据。 第一行一个整数N,表示具有的节点数。 第二行N个整数,第I个整数表示第I个点上的值。 接下来N-1行每行两个整数a,b,表示存在一条边连接着a号节点和b号节点。 输出格式: 输出到文本文件cut.out中。 一个数,表示当1<= N <=16000时,经过一系列“裁枝剪叶”之后所能得到无根树上的节点值之和的最大值。 输入样例: 7 -1 -1 -1 1 1 1 0 1 4 2 5 3 6 4 7 5 7 6 7 输出样例: 3
【文件预览】:
zy2_5_cut_branch
----zy2_5_cut_branch.ncb(57KB)
----cut.out(0B)
----zy2_5_cut_branch.dsw(540B)
----zy2_5_cut_branch.plg(4KB)
----cut3.in(49B)
----cut3.out(0B)
----cut2.out(0B)
----zy2_5_cut_branch.opt(48KB)
----cyio.h(3KB)
----Debug()
--------zy2_5_cut_branch.bsc(393KB)
--------cut_branch.sbr(0B)
----cut.in(76B)
----zy2_5_cut_branch.dsp(4KB)
----cut_branch.cpp(4KB)
----cut2.in(57B)

网友评论