解题思路
将 fileIds[i] 与 parentIds[i] 连成森林(虚拟根 0),在父节点上建 子节点邻接表。从 targetId 出发做 DFS 或 BFS,收集目标及全部后代,最后 排序 输出。
- 建树:对每个下标 i,边
parentIds[i] → fileIds[i];
P14392.返回所有加载的AGENTS.md文件ID列表(100分)
题目内容
编码 Agent 工具会在当前项目下生成 AGENTS.md 文件用于记录相关上下文和规范信息;每个 md 文件都有一个唯一 ID,其中根文件 ID 为 0,其他文件除自身 ID 外,还有一个父文件 ID;
Agent 在加载某个 md 文件时需同时加载该 md 文件的所有子文件,当前给定 3 个输入值:
输入 1:md 文件自身 ID 列表(用例保证列表中的 ID 不出现 0)
输入 2:md 文件对应的父文件 ID 列表
输入 3:此次需要加载的某个 md 文件 ID
请输出:需要加载的文件 ID 及所有子文件 ID 列表,并按从小到大的数值顺序返回。
补充说明
注意
(1) 被加载的文件 ID 一定在第一个列表中。
(2) 两个列表数量相等,且长度 n 满足: 1<=n<=1000。
样例1
输入
[1,2,3,4,5,6,7],[0,1,1,2,2,3,0],2
输出
[2,4,5]
说明
文件父子关系如下:
0
├── 1
│ ├── 2
│ │ ├── 4
│ │ └── 5
│ └── 3
│ └── 6
└── 7
此次需要加载的文件 ID 为 2,因此需要同时加载文件 2 的所有子文件,即 4 和 5。
所以最终返回:
[2,4,5]