Насколько я понимаю, `total_weight` это `sum(w for _, _, w in edges)`.  Поэтому лучше не передавать его в качестве параметра, а вычислять при инициализации, иначе можно передать неправильный total_weight.