1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/有向无环图中一个节点的所有祖先 [all-ancestors-of-a-node-in-a-directed-acyclic-graph].html
2022-03-29 12:43:11 +08:00

55 lines
2.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给你一个正整数&nbsp;<code>n</code>&nbsp;,它表示一个 <strong>有向无环图</strong>&nbsp;中节点的数目,节点编号为&nbsp;<code>0</code>&nbsp;&nbsp;<code>n - 1</code>&nbsp;(包括两者)。</p>
<p>给你一个二维整数数组&nbsp;<code>edges</code>&nbsp;,其中&nbsp;<code>edges[i] = [from<sub>i</sub>, to<sub>i</sub>]</code>&nbsp;表示图中一条从&nbsp;<code>from<sub>i</sub></code>&nbsp;&nbsp;<code>to<sub>i</sub></code>&nbsp;的单向边。</p>
<p>请你返回一个数组&nbsp;<code>answer</code>,其中<em>&nbsp;</em><code>answer[i]</code>是第&nbsp;<code>i</code>&nbsp;个节点的所有&nbsp;<strong>祖先</strong>&nbsp;,这些祖先节点&nbsp;<strong>升序</strong>&nbsp;排序。</p>
<p>如果 <code>u</code>&nbsp;通过一系列边,能够到达 <code>v</code>&nbsp;,那么我们称节点 <code>u</code>&nbsp;是节点 <code>v</code>&nbsp;<strong>祖先</strong>&nbsp;节点。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2019/12/12/e1.png" style="width: 322px; height: 265px;"></p>
<pre><b>输入:</b>n = 8, edgeList = [[0,3],[0,4],[1,3],[2,4],[2,7],[3,5],[3,6],[3,7],[4,6]]
<b>输出:</b>[[],[],[],[0,1],[0,2],[0,1,3],[0,1,2,3,4],[0,1,2,3]]
<strong>解释:</strong>
上图为输入所对应的图。
- 节点 0 1 和 2 没有任何祖先。
- 节点 3 有 2 个祖先 0 和 1 。
- 节点 4 有 2 个祖先 0 和 2 。
- 节点 5 有 3 个祖先 0 1 和 3 。
- 节点 6 有 5 个祖先 0 1 2 3 和 4 。
- 节点 7 有 4 个祖先 0 1 2 和 3 。
</pre>
<p><strong>示例 2</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2019/12/12/e2.png" style="width: 343px; height: 299px;"></p>
<pre><b>输入:</b>n = 5, edgeList = [[0,1],[0,2],[0,3],[0,4],[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
<b>输出:</b>[[],[0],[0,1],[0,1,2],[0,1,2,3]]
<strong>解释:</strong>
上图为输入所对应的图。
- 节点 0 没有任何祖先。
- 节点 1 有 1 个祖先 0 。
- 节点 2 有 2 个祖先 0 和 1 。
- 节点 3 有 3 个祖先 0 1 和 2 。
- 节点 4 有 4 个祖先 0 1 2 和 3 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n &lt;= 1000</code></li>
<li><code>0 &lt;= edges.length &lt;= min(2000, n * (n - 1) / 2)</code></li>
<li><code>edges[i].length == 2</code></li>
<li><code>0 &lt;= from<sub>i</sub>, to<sub>i</sub> &lt;= n - 1</code></li>
<li><code>from<sub>i</sub> != to<sub>i</sub></code></li>
<li>图中不会有重边。</li>
<li>图是 <strong>有向</strong><strong>无环</strong> 的。</li>
</ul>