有一个有向图(可能包含环),每个节点上都有一个值,我们如何得到每个节点可达值的总和。例如,在以下图中:
节点1的可达总和为:2 + 3 + 4 + 5 + 6 + 7 = 27节点2的可达总和为:4 + 5 + 6 + 7 = 22
.....
我的解决方案:为了得到所有节点的总和,我认为时间复杂度为O(n + m),其中n是节点数,m表示边的数量。应该使用DFS,对于每个节点,我们应该递归地使用一种方法来查找其子节点,并在完成其计算时保存子节点的总和,以便将来不需要再次计算它。需要为每个节点创建一个集合,以避免由循环引起的无限计算。这个方案可行吗?我认为它还不够优雅,尤其是需要创建许多集合。有更好的解决方案吗?谢谢。