class Solution: def shortestAlternatingPaths(self, n: int, redEdges: List[List[int]], blueEdges: List[List[int]]) -> List[int]: rg = [[] for _ in range(n)] bg = [[] for _ in range(n)] d = [[-1, -1] for _ in range(n)] for s, e in redEdges: rg[s].append(e) for s, e in blueEdges : bg[s].append(e) queue = deque([(0, 'r'), (0, 'b')]) d[0] = [0, 0] while queue: cur, prev = queue.popleft() if prev == 'r': nxt = d[cur][0] for next in bg[cur]: if d[next][1] == -1: d[next][1] = nxt + 1 queue.append((next, 'b')) if prev == 'b': nxt = d[cur][1] for next in rg[cur]: if d[next][0] == -1: d[next][0] = nxt + 1 queue.append((next, 'r')) ans = [-1 for _ in range(n)] for i in range(n): if -1 in d[i]: ans[i] = sum(d[i]) + 1 else : ans[i] = min(d[i]) return ans평범한 BFS 문제인데 생각보다 귀찮았당; 이틀 연속 BFS네
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.