2192. 방향성 비순환 그래프에 있는 노드의 모든 조상
중간
방향성 비순환 그래프(DAG)의 노드 수를 나타내는 양의 정수 n이 제공됩니다. 노드 번호는 0부터 n - 1(포함)까지입니다.
또한 2D 정수 배열 가장자리가 제공됩니다. 여기서 edge[i] = [fromi, toi]는 단방향이 있음을 나타냅니다. 그래프의 i에서 i로의 가장자리
목록 답변을 반환합니다. 여기서 답변[i]는 i번째 노드의 조상 목록이며 오름차순으로 정렬됩니다.
노드 u는 일련의 에지를 통해 v에 도달할 수 있는 경우 다른 노드 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!