n вершин с номерами от 0 до n - 1; edges[i] = [u, v] — ребро между u и v. В вершине i записано число values[i], также дан ключ key.
Операцию можно делать сколько угодно раз (в том числе ни разу): выбрать любое ребро [u, v] и заменить оба числа на его концах: values[u] = values[u] XOR key, values[v] = values[v] XOR key.
Верните наибольшую сумму чисел во всех вершинах, которой можно добиться.values=[4, 1, 6], key=5, edges=[[0, 1], [1, 2]] → 11
После переключения 4 → 1, 1 → 4, 6 → 3. Выгодно только второе, а меняются вершины всегда парой. Переключив ребро (0, 1), получаем [1, 4, 6] — та же сумма 11, что и без операций; больше не выйдет.
values=[10, 10], key=1, edges=[[0, 1]] → 22
Одно переключение даёт [11, 11], сумма 22.
values=[1, 2, 3, 0], key=6, edges=[[0, 1], [0, 2], [0, 3]] → 22
values=[4, 1, 6], key=5, edges=[[0, 1], [1, 2]]
11
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 90 тестов на сервере, включая скрытые.