classSolution: defallPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]: path = [0] ans = [] n = len(graph) defdfs(t,graph,n): if path[-1] == n-1: ans.append(path[:]) for i in graph[t]: path.append(i) dfs(i,graph,n) path.pop() dfs(0,graph,n) return ans
classSolution: defallPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]: from collections import deque dq = deque([[0]]) ans = [] while dq: size = len(dq) for _ inrange(size): tmp = dq.popleft() if tmp[-1] == len(graph)-1: ans.append(tmp) for i in graph[tmp[-1]]: dq.append(tmp+[i]) return ans
record = {} for i inrange(len(points)): for j inrange(i+1,len(points)): record[(i,j)] = mhd(points[i],points[j])
sortedRecord = sorted(record.items(),key = lambda x: x[1]) disjoinedset = SetUnion(len(points)) ans = 0 for items in sortedRecord: ifnot disjoinedset.union(items[0][0],items[0][1]): ans += items[1] if disjoinedset.edges == len(points)-1: return ans return ans
classSolution: defnetworkDelayTime(self, times: List[List[int]], n: int, k: int) -> int: g = [[float('inf')] * n for _ inrange(n)] for x, y, time in times: g[x - 1][y - 1] = time
dist = [float('inf')] * n dist[k - 1] = 0 used = [False] * n for _ inrange(n): x = -1 for y, u inenumerate(used): ifnot u and (x == -1or dist[y] < dist[x]): x = y used[x] = True for y, time inenumerate(g[x]): dist[y] = min(dist[y], dist[x] + time)
ans = max(dist) return ans if ans < float('inf') else -1