Тема: опечатка в Крускле с непер. множествами
for (int j=a; j!=p[j]; j=p[j]) p[j] = pa;
for (int j=b; j!=p[j]; j=p[j]) p[j] = pb;
после j=p[j] j сразу = pa, и мы пропускаем все элементы которые собирались "сослать" на pa..
ченить типа
for(int j=a, a=P[a]; a != pa; j = a, a=P[a]) P[j] = pa;
for(int j=b, b=P[b]; b != pb; j = b, b=P[b]) P[j] = pb;
ЗЫ.. атак сайт отл. большое вам спасибо) давно пользуюсь им, но ошибка эта все не исправляется чет)