形如 1→ 3 这样的式子是推导式,说明结论 1 可以推导出结论 3 。 显然这样的推导式具有传递性: 如果 1→ 3 且 3→ 5 ,那么肯定满足 1→ 5 。 现在给出 n 个推导式,你需要输出结论 c 能够推导出多少个不同的结论。 显然任何结论都可以推导出自己。
第一行输入两个整数 n 和 c ,含义如题意所述。 接下来 n 行,每行输入两个整数 x,y ,表示一个推导式 x→ y ,可能会出现重复的推导式。 (1≤ n ≤ 10^5),(1≤ x,y,c ≤ 10000)
输出一个整数,表示结论 c 能推导出的不同结论的数目。
5 1 1 2 1 3 3 9 4 2 8 1
4
2 2 1 2 3 2
1
考点:图
数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:图
本题切入点
从 c 出发在推导关系图上做 DFS/BFS,统计能到达的不同结论数量(注意重复边)。
把关系抽象成点与边,再按问的类型选遍历/最短路/连通性算法。
思路框架(图 通法 · 非本题专属)
实现要点:注意是有向图还是无向图,无向图加边记得双向。
复杂度:时间 O(V+E) 遍历 / O(E log V) Dijkstra | 空间 O(V+E)
该范式的通法易错点
对照本题
样例 1:输入 5 1 / 1 2 / 1 3 / 3 9 / 4 2 / 8 1 → 输出 4
根据推导式 1→2,1→3,3→9 ,可以判断出结论 1 可以推出结论 2,3,9 ,加上本身总共 4 个结论。
样例 2:输入 2 2 / 1 2 / 3 2 → 输出 1
结论 2 不能推导出除了本身外的任何结论。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年OPPO秋招后端岗笔试。