找出是否有可能使用图表来平衡人们之间的债务

时间:2017-03-27 19:25:42

标签: algorithm graph

说一群朋友去旅行了。出了点问题,当他们回来时,有些人不再是朋友了。现在我们需要找到一种方法来分摊旅行的成本。有些人欠钱(因为他们付了太多钱)而有些人欠款(付得太少)。

假设我们有两个名单,债务和关系。债务清单包含整数列表。每个整数都是一个人。一个正整数意味着他们欠那么多钱,负面意味着欠那么多钱。关系是一个元组列表,显示两个人是否是朋友。例如(0,3)意味着债务[0]和债务[3]是朋友。我试图找到一种方法,看看每个人是否可以通过在人与人之间转移钱来获得收益。

一个例子:

debts = [5, -5, 10]
relationship = [(0, 1), (1, 2)]

我在思考的方式是制作一个图表来构建每个人之间的关系。使用DFS,我将从第一个人开始,清除他们的债务(即使其为0)并将这笔钱转移给下一个人。最终我会经历所有人,如果最后一个人的值不是0,那么就不可能得到平衡。

我在正确的道路上吗?我相信这需要O(| V | + | E |)

0 个答案:

没有答案
相关问题