Что-то полностью сломано в вашем коде.
Индекс Данна, равный 0, должен возникать, только если у каждого кластера есть второй кластер на расстоянии 0. Но тогда они должны быть объединены.
Кроме того, расстояние 0 должно возникать только в том случае, если все кластеры являются дублирующими точками. Таким образом, ваш набор данных будет иметь не более 3 различных точек.
Так что ваш код, вероятно, плохой.