Найти ошибку в коде?
Подскажите,что не так в моей программе ? 
Проверьте на предмет переопределения переменной k вот в этом месте:for k, v in ribsDict.items()
Возможно поиск связи между точками можно осуществить по алгоритму DSU(метод не пересекающихся множеств), но у меня не получилось.
Ага. Упорства вам не занимать, но ваш код прямиком идёт на помойку.N = 5
data = (
    ((0, 1),),
    ((1, 2), (3, 2)),
    ((4, 3),),
    ((1, 3), (4, 2))
)
root = list(range(N))


def chain_root(a):
    res = []
    while a != root[a]:
        res.append(a)
        a = root[a]
    return res, a


for pairs in data:
    for a, b in pairs:
        aa, ra = chain_root(a)
        bb, rb = chain_root(b)
        if ra > rb:
            ra, rb = rb, ra
        for node in [*aa, *bb, rb]:
            root[node] = ra
    aa, ra = chain_root(N - 1)
    if ra:
        for node in aa:
            root[node] = ra
        print('WAIT')
    else:
        print('ATTACK')
        break
Подучите питон - он у вас пока ниже плинтуса. И да - как успехи в предыдущей задаче?