华为校招机试 - 树上逃离(20230419)

题目描述

给定一棵树,这棵树有n个节点,节点编号从0开始依次递增,0固定为根节点。

在这棵树上有一个小猴子,初始时候该猴子位于根节点(0号)上,小猴子一次可以沿着树上的边从一个节点挪到另一个节点,但这棵树上有一些节点设置有障碍物,如果某个节点上设置了障碍物,小猴子就不能通过连接该节点的边挪动到该节点上。

问小猴子是否能够跑到树的叶子节点(叶子节点定义为只有一条边连接的节点),如果可以请输出小猴子跑到叶子节点的最短路径(通过的边最少),否则输出字符串NULL。

输入描述

第一行给出数字n,表示这个树有n个节点,节点编号从0开始依次递增,0固定为根节点,1 <= n <= 10000

第二行给出数字edge,表示接下来有edge行,每行是一条边

接下来的edge行是边:x y,表示x和y节点有一条边连接

边信息结束后接下来的一行给出数字book,表示接下来有block行,每行是个障碍物

接下来的block行是障碍物:x,表示节点x上存在障碍物

输出描述

如果小猴子能跑到树的叶子节点,请输出小猴子跑到叶子节点的最短路径(通过的边最少),比如小猴子从0经过1到达2(叶子节点),那么输出”0->1->2“,否则输出”NULL

猜你喜欢

转载自blog.csdn.net/qfc_128220/article/details/130329152