2045_d森林问题

2022-5-16 18:18| 发布者: Hocassian| 查看: 50| 评论: 0|原作者: 肇庆学院ACM合集

摘要:
C:\Users\Administrator\Downloads\2019-10-12-10-14-3-89504273108000-Problem List-采集的数据-后羿采集器.html

Pro.ID

2045

Title

d森林问题

Title链接

http://10.20.2.8/oj/exercise/problem?problem_id=2045

AC

0

Submit

0

Ratio

-

时间&空间限制

  • Time Limit: 1000/500 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others)
  • 描述

    设T 是一棵带权树,树的每一条边带一个正权。又设S是T的顶点集,T/S 是从树T中将S中顶点删去后得到的森林。如果T/S中所有树的从根到叶的路长都不超过d ,则称T/S是一个d森林。

    (1) 设计一个算法求T的最小顶点集S,使T/S是d森林。(提示:从叶向根移动。)

    (2) 分析算法的正确性和计算复杂性。

    (3) 设T中有n个顶点,则算法的计算时间复杂性应为O(n)。

    对于给定的带权树,计算最小分离集S。

    输入

    输入第一行有一个正整数n,表示给定的带权树有n个顶点,编号为1,2,…,n。编号为1的顶点是树根。

    接下来的n行中,第i+1行描述与i个顶点相关联的边的信息。每行的第一个正整数k表示与该顶点相关联的边数。其后2k个数中,每两个数表示一条边。第一个数是与该顶点相关联的另一个顶点的编号,第二个数是边权值。当k=0 时表示相应的结点是叶结点。文件的最后一行是正整数d,表示森林中所有树的从根到叶的路长都不超过d 。

    输出

    Description

    设T 是一棵带权树,树的每一条边带一个正权。又设S是T的顶点集,T/S 是从树T中将S中顶点删去后得到的森林。如果T/S中所有树的从根到叶的路长都不超过d ,则称T/S是一个d森林。

    (1) 设计一个算法求T的最小顶点集S,使T/S是d森林。(提示:从叶向根移动。)

    (2) 分析算法的正确性和计算复杂性。

    (3) 设T中有n个顶点,则算法的计算时间复杂性应为O(n)。

    对于给定的带权树,计算最小分离集S。

    Input

    输入第一行有一个正整数n,表示给定的带权树有n个顶点,编号为1,2,…,n。编号为1的顶点是树根。

    接下来的n行中,第i+1行描述与i个顶点相关联的边的信息。每行的第一个正整数k表示与该顶点相关联的边数。其后2k个数中,每两个数表示一条边。第一个数是与该顶点相关联的另一个顶点的编号,第二个数是边权值。当k=0 时表示相应的结点是叶结点。文件的最后一行是正整数d,表示森林中所有树的从根到叶的路长都不超过d 。

    Output

    输出最小分离集S的顶点数。如果无法得到所要求的d森林则输出 "No Solution"

    Sample Input

    4
    2 2 3 3 1
    1 4 2
    0
    0
    4

    Sample Output

    1

    Author

    样例输入

    4
    2 2 3 3 1
    1 4 2
    0
    0
    4

    样例输出

    1

    提示

    作者


    路过

    雷人

    握手

    鲜花

    鸡蛋

    最新评论

    返回顶部