题目:原题链接(中等)
标签:图、广度优先搜索、深度优先搜索
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
Ans 1 (Python) | O ( N × E ) | O ( N + E ) | 912ms (37.33%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一:
class Solution:
def findTheCity(self, n: int, edges: List[List[int]], distanceThreshold: int) -> int:
graph = collections.defaultdict(dict)
for edge in edges:
graph[edge[0]][edge[1]] = edge[2]
graph[edge[1]][edge[0]] = edge[2]
ans_idx, ans_val = -1, n
for city in range(n):
visited = collections.Counter({city: 0})
queue = collections.deque([(city, 0)])
while queue:
for _ in range(len(queue)):
city1, d1 = queue.popleft()
for city2 in graph[city1]:
d2 = d1 + graph[city1][city2]
if d2 <= distanceThreshold and (city2 not in visited or d2 < visited[city2]):
queue.append((city2, d2))
visited[city2] = d2
if len(visited) <= ans_val:
ans_idx, ans_val = city, len(visited)
return ans_idx