1192. Critical Connections in a Network
Hard
There are n
servers numbered from 0
to n - 1
connected by undirected server-to-server connections
forming a network where connections[i] = [ai, bi]
represents a connection between servers ai
and bi
. Any server can reach other servers directly or indirectly through the network.
A critical connection is a connection that, if removed, will make some servers unable to reach some other server.
Return all critical connections in the network in any order.
Example 1:
Input: n = 4, connections = [[0,1],[1,2],[2,0],[1,3]]
Output: [[1,3]]
Explanation: [[3,1]] is also accepted.
Example 2:
Input: n = 2, connections = [[0,1]]
Output: [[0,1]]
Constraints:
2 <= n <= 105
n - 1 <= connections.length <= 105
0 <= ai, bi <= n - 1
ai != bi
There are no repeated connections.
class Solution:
def criticalConnections(self, n: int, connections: List[List[int]]) -> List[List[int]]:
self.visited = set()
self.low = {}
self.d = defaultdict(list)
self.result = []
for source, destination in connections:
self.d[source].append(destination)
self.d[destination].append(source)
self.dfs(0,-1,0)
return self.result
def dfs(self, node, parent, rank):
self.low[node] = rank
self.visited.add(node)
for adj in self.d[node]:
if adj == parent:
continue
if adj not in self.visited:
self.dfs(adj, node, rank+1)
self.low[node] = min(self.low[node], self.low[adj])
if rank < self.low[adj]:
self.result.append([node, adj])
Previous1379. Find a Corresponding Node of a Binary Tree in a Clone of That TreeNext329. Longest Increasing Path in a Matrix
Last updated