算法十二

树形路线走起

算法描述

  • 输入是一个具有n个结点的树vertices,标记为0 - n-1
  • 使用parent变量描述该树,parent具有n-1个元素
  • 每个vertices(i+1)和parent(i)组成一个边
  • 小明站在0结点上,小明每一步可以从所站结点移动到附近结点
  • 小明允许移动L
  • 返回小明在移动过程中可以访问的最大结点数
  • 过程中重复访问的结点只计算一次

参数定义

  • 类名 WalkOverATree
  • 方法 maxNodesVisited
  • 输入参数 vector <int>, int
  • 输出 int
  • 方法声明 int maxNodesVisited(vector <int> parent, int L)

限制条件

  • parent包含[0,49]个元素
  • parent[i]的范围在[0,i]之间
  • L在[1,100]之间

例子

  • 输入
    • parent: {0, 0}
    • L
  • 输出
    • 2

测试实例

  • 实例一

    • 输入
      • {0, 0}
      • 3
    • 输出
      • 3
  • 实例二

    • 输入
      • {0, 1, 2, 3}
      • 2
    • 输出
      • 3
  • 实例三

    • 输入
      • {0,0,0,0,2,4,2,3,1}
      • 1
    • 输出
      • 2
  • 实例四

    • 输入
      • {0,0,1,2,3,2,3,1,3,0,1,8,6,8,0,5,15,0,9}
      • 4
    • 输出
      • 5

图解
算法十二

  • 实例五

    • 输入
      • {0,0,0,1,1,3,5,1,4,5,2,2,10,5,10,10,11,13,8,3,18,15,20,20,23,8,11,26,4}
      • 26
    • 输出
      • 17
  • 实例六

    • 输入
      • {0, 0, 2, 0}
      • 100
    • 输出
      • 5
  • 实例七

    • 输入
      • {0, 0, 2}
      • 4
    • 输出
      • 4