Если подвижных мостов мало, можно каждую вершину размножить в 2b экземплярах (b — кол-во мостов). Тогда пойдёт даже не Дейкстра, а обычный поиск в ширину.
Если два моста «сцеплены» друг с другом и наводятся/разводятся одновременно, то в b они идут одной штукой.
А если мостов много и 2b — непозволительная трата, тогда интересно. Думаю, ничего, кроме эвристик, не поможет. Например, может случиться так, что кратчайший путь от включателя до всех мостов, которыми он управляет, посуху. Или мосты (в смысле управляемые) — это мосты (в смысле теории графов). Или что-нибудь ещё.
Заметил, стоит мне сесть за компьютер дома моя кошка начинает проявлять повышенный интерес. Лезет, толкает головой, просит гладить, пытается влезть между мной и клавиатурой…
uint32_t xor_all = 0;
uint32_t xor_bit[32] = {0};
....
for (i = 0; i < n; ++i) {
xor_all ^= in;
for (j = 0; j < 32; ++j) {
if (in & (1 << j))
xor_bit[j] ^= in;
}
}
for (j = 0; j < 32; ++j) {
if (xor_all & (1 << j)) {
out1 = xor_bit[j];
out2 = xor_all ^ xor_bit[j];
break;
}
}
do {
if (some condition){
some code;
break;
}
if (some other condition){
some code;
break;
}
} while(false);