2192。有向無環圖中某個節點的所有祖先
中
給定一個正整數 n,表示有向無環圖 (DAG) 的節點數。節點編號從 0 到 n - 1(包含)。
還給你一個2D 整數數組Edge,其中Edges[i] = [fromi, toi] 表示存在一個單向圖中從fromi 到toi 的邊。
返回列表答案,其中answer[i]是第i第節點的祖先列表,按升序排序。
如果 u 可以透過一組邊到達 v,則節點 u 是另一個節點 v 的祖先。
範例1:
範例2:
約束:
解:
class Solution { /** * @param Integer $n * @param Integer[][] $edges * @return Integer[][] */ function getAncestors($n, $edges) { $adjacencyList = array_fill(0, $n, []); foreach ($edges as $edge) { $from = $edge[0]; $to = $edge[1]; $adjacencyList[$to][] = $from; } $ancestorsList = []; for ($i = 0; $i < $n; $i++) { $ancestors = []; $visited = []; $this->findChildren($i, $adjacencyList, $visited); for ($node = 0; $node < $n; $node++) { if ($node == $i) continue; if (in_array($node, $visited)) $ancestors[] = $node; } $ancestorsList[] = $ancestors; } return $ancestorsList; } private function findChildren($currentNode, &$adjacencyList, &$visitedNodes) { $visitedNodes[] = $currentNode; foreach ($adjacencyList[$currentNode] as $neighbour) { if (!in_array($neighbour, $visitedNodes)) { $this->findChildren($neighbour, $adjacencyList, $visitedNodes); } } } }
聯絡連結
以上是有向無環圖中節點的所有祖先的詳細內容。更多資訊請關注PHP中文網其他相關文章!