1. 解题思路
这一题思路上就是一个宽度优先遍历的问题,给定的图本质上就是一个树,因此我们只需要按照宽度优先遍历的方式遍历一下全部的节点即可。
2. 代码实现
给出python代码实现如下:
MOD = 10**9+7
class Solution:
def baseUnitConversions(self, conversions: List[List[int]]) -> List[int]:
n = len(conversions)+1
graph = defaultdict(list)
for src, tgt, conv in conversions:
graph[src].append((tgt, conv))
ans = [1 for _ in range(n)]
q = [0]
while q:
src = q.pop(0)
for tgt, conv in graph[src]:
ans[tgt] = (ans[src] * conv) % MOD
q.append(tgt)
return ans
提交代码评测得到:耗时595ms,占用内存78.2MB。