Андрей, погоди, что-то я сразу не вкурил. То что ты сначала рассказал - это же почти классическая переведенная в матрицы задача коммивояжера на ориентированном графе? A[i,j] - время в пути из i в j. B[i,j] - используем это ребро в выбранном кольцевом пути по всем городам или нет. Как раз получается B[i,j] или 0 или 1.
Сумма B[i,j] по j от 0 до n-1 при любом i равна 1, сумма B[i,j] по i от 0 до n-1 при любом j равна 1 - это типа в каждый город должны ровно 1 раз войти и ровно 1 раз выйти.
Тут же понятно, почему B[i,i]=0 при любом i

нечего из i в i ходить
Добавлено спустя 30 секунд:Только в коммивояжере должен быть 1 цикл, а у тебя разрешено несколько, лишь бы все города были охвачены
