擅长:python、mysql、java
<p>所以,修改Or Dinari的代码来处理任意权重函数,就像networkx的其他部分一样。。。在</p>
<pre><code>def negative_cycle(g, weight_func=burns_advanced):
n = len(g.nodes())
d = defaultdict(lambda: 10000)
p = defaultdict(lambda: -1)
x = -1
for i in range(n):
for u, v in g.edges():
weight = weight_func(u, v, g[u][v])
if d[u] + weight < d[v]:
d[v] = d[u] + weight
p[v] = u
x = v
if x == -1:
print('No negative cycle')
return None
for i in range(n):
x = p[x]
cycle = []
v = x
while True:
cycle.append(v)
if v == x and len(cycle) > 1:
break
v = p[v]
return list(reversed(cycle))
</code></pre>
<p>工作起来很有魅力!不管怎样,我都会给你赏金的,因为推荐信正是我所需要的。谢谢!在</p>