有没有人有解决这个问题的想法,但只使用通用树?
我需要对所有节点求和,但要尊重边缘值。
如果两个节点之间的边 > 1,则子树的成本最多可乘以整个子树。
解决方案必须使用树算法
谢谢
有没有人有解决这个问题的想法,但只使用通用树?
我需要对所有节点求和,但要尊重边缘值。
如果两个节点之间的边 > 1,则子树的成本最多可乘以整个子树。
解决方案必须使用树算法
谢谢
假设您有一个 object Node
,包含它自己的cost
和一组外向的edges
,每个都有一个权重,您可以执行以下操作。(注意我假设你有一个 DAG,正如 pkacprzak 提到的,因为你发布的图片没有显示树)
class Edge
{
public int Weight { get; set; }
public Node Start { get; set; }
public Node End { get set; }
}
class Node
{
private int cost;
private IEnumerable<Edge> edges;
// ...
public int Cost()
{
int totalCost = cost;
foreach (var edge in edges)
{
totalCost += edge.Weight * edge.End.Cost();
}
return totalCost;
}
}
您应该调用Cost
DAG 的源(即没有传入边的节点)。如果您有多个来源,则取决于您想要实现的目标。