class Solution:
def closestMeetingNode(self, edges: List[int], node1: int, node2: int) -> int:
ans = (100001,-1)
v1 = [-1 for _ in edges]
v2 = [-1 for _ in edges]
v1[node1] = 0
while edges[node1] != -1 and v1[edges[node1]] == -1:
v1[edges[node1]] = v1[node1] + 1
node1 = edges[node1]
v2[node2] = 0
if v1[node2] != -1:
ans = (v1[node2], node2)
while edges[node2] != -1 and v2[edges[node2]] == -1:
v2[edges[node2]] = v2[node2] + 1
node2 = edges[node2]
if v1[node2] != -1:
ans = min(ans, (max(v1[node2], v2[node2]), node2))
return ans[1]
BFS, DFS 안 써도 되는 outdegree edge 하나짜리 간단한 문제이긴 한데..
인덱스가 아니라 maximize 되는 값을 출력해서 실수함; 결국 ans를 튜플로 교체..
https://leetcode.com/problems/find-closest-node-to-given-two-nodes/