네트워크의 중요한 연결
n
에서 0
까지 번호가 매겨진 n - 1
서버가 무방향 서버 대 서버connections
로 연결되어 네트워크를 형성하며 여기서 connections[i] = [ai, bi]
는 서버ai
와 bi
사이의 연결을 나타냅니다. 모든 서버는 네트워크를 통해 직접 또는 간접적으로 다른 서버에 도달할 수 있습니다.중요한 연결은 제거될 경우 일부 서버가 다른 서버에 연결할 수 없게 만드는 연결입니다.
순서에 관계없이 네트워크의 모든 중요한 연결을 반환합니다.
예 1:
입력: n = 4, 연결 = [[0,1],[1,2],[2,0],[1,3]]
출력: [[1,3]]
설명: [[3,1]]도 허용됩니다.
예 2:
입력: n = 2, 연결 = [[0,1]]
출력: [[0,1]]
제약:
2 <= n <= 105
n - 1 <= connections.length <= 105
0 <= ai, bi <= n - 1
ai != bi
해결책:
from collections import defaultdict
class Solution:
def DFS(self, graph, node, v, parent, disc, low):
v.add(node)
disc[node] = self.t
low[node] = self.t
self.t += 1
for j in graph[node]:
if j not in v:
parent[j] = node
self.DFS(graph, j, v, parent, disc, low)
low[node] = min(low[node], low[j])
elif j != parent[node]:
low[node] = min(low[node], disc[j])
def criticalConnections(self, n: int, connections: List[List[int]]) -> List[List[int]]:
graph = defaultdict(list)
for a, b in connections:
graph[a].append(b)
graph[b].append(a)
self.t = 0
parent = defaultdict(lambda: -1)
disc = defaultdict(lambda: float('inf'))
low = defaultdict(lambda: float('inf'))
v = set()
for i in range(n):
if i not in v:
self.DFS(graph, i, v, parent, disc, low)
return [[u, v] for u, v in connections if low[u] > disc[v] or low[v] > disc[u]]
Reference
이 문제에 관하여(네트워크의 중요한 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/critical-connections-in-a-network-674텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)