通过率 60% · 提交 10 · 通过 6
在艾瑟兰大陆上,许多魔法塔通过单向秘脉相连,形成了一张法术网络。 每座魔法塔都有唯一编号,并且可能属于以下两类之一: * 普通塔 * 某一时刻,恰好有一座魔法塔成为唯一的诅咒源。诅咒会沿着秘脉方向不断扩散,所有能够被它沿有向路径到达的,都会收到异常回响。 为了防止灾厄蔓延,法师议会制定了如下巡检规则: 1. 诅咒源一定要进行巡检。 2. 如果某座符印塔收到了异常回响,那么这座符印塔也必须进行巡检。 3. 如果某座必须巡检的魔法塔本身是符印塔,那么它的所有也都必须进行巡检。 4. 规则3会不断递归生效,直到不会再新增需要巡检的魔法塔为止。 现在给出整张秘脉网络、所有符印塔以及唯一的诅咒源,请你输出所有需要巡检的魔法塔编号,按升序输出。 如果存在一条从 `u` 到 `v` 的有向路径,则称: * `v` 是 `u` 的下游魔法塔 * `u` 是 `v` 的上游魔法塔 注意:这张图不保证无环。 输入:第一行输入两个整数 `n` 和 `k`,分别表示魔法塔总数与符印塔数量。 接下来 `n` 行,每行描述一座魔法塔的出边信息,格式为: `id c to1 to2 ... toc` 含义如下: * `id` 表示当前魔法塔编号 * `c` 表示它直接连接的下游魔法塔数量 * `to1 ... toc` 表示这些下游魔法塔的编号 接下来 `k` 行,每行一个整数,表示一座符印塔的编号。 最后一行输入一个整数 `origin`,表示唯一的诅咒源编号。 * `1 <= n <= 10000` * `0 <= k <= 1000` * `0 <= c <= 100` * `1 <= id <= 10000` 输入保证: * 所有魔法塔编号互不相同 * 所有出边指向的编号都出现在给定的 `n` 座魔法塔中 输出:输出一行,包含所有需要巡检的魔法塔编号,按升序排列,编号之间用空格分隔。
这类题属于华为可信认证科目一方向中「可信 / BFS」方向的高频题型,通常考察对「可信 / BFS」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行输入两个整数 n 和 k,分别表示魔法塔总数与符印塔数量。
接下来 n 行,每行描述一座魔法塔的出边信息,格式为:
id c to1 to2 ... toc
含义如下:
id 表示当前魔法塔编号c 表示它直接连接的下游魔法塔数量to1 ... toc 表示这些下游魔法塔的编号接下来 k 行,每行一个整数,表示一座符印塔的编号。
最后一行输入一个整数 origin,表示唯一的诅咒源编号。
1 <= n <= 100000 <= k <= 10000 <= c <= 1001 <= id <= 10000输入保证:
n 座魔法塔中输出一行,包含所有需要巡检的魔法塔编号,按升序排列,编号之间用空格分隔。
示例 1
输入示例
7 2 12 2 25 31 25 1 44 31 0 44 2 57 63 57 1 71 63 1 71 71 0 44 71 57
输出示例
12 25 44 57 63 71
57,因此 57 一定需要巡检。71。71 是符印塔,并且收到了异常回响,因此 71 也需要巡检。71 是需要巡检的符印塔,所以它的所有上游魔法塔也都需要巡检,即 63、44、25、12、57。12 25 44 57 63 71。示例 2
输入示例
5 1 101 1 205 205 1 330 330 2 410 520 410 0 520 1 330 330 330
输出示例
330
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有