07. Lomsat gelral#
| 🎯 Уровень | 🔴 Senior |
| 🔗 Источник | Codeforces 600E — Lomsat gelral |
| 📊 Сложность | 2300 |
| 🏷️ Темы | деревья, DSU on tree |
📝 Условие#
У каждой вершины дерева есть цвет. Для каждой вершины найдите сумму цветов, которые встречаются в её поддереве максимальное число раз.
📥 Входные данные#
В первой строке число n (1 ≤ n ≤ 10⁵). Во второй — n чисел c_i (1 ≤ c_i ≤ n) — цвета вершин. Далее n − 1 строк — рёбра дерева. Корень — вершина 1.
📤 Выходные данные#
n чисел через пробел — сумма доминирующих цветов для каждой вершины.
🧪 Тесты#
Тест 1#
Ввод:
4
1 2 3 4
1 2
2 3
2 4
Вывод:
10 9 3 4
Тест 2#
Ввод:
15
1 2 3 1 2 3 3 1 1 3 2 2 1 2 3
1 2
1 3
1 4
1 14
1 15
2 5
2 6
2 7
3 8
3 9
3 10
4 11
4 12
4 13
Вывод:
6 5 4 3 2 3 3 1 1 3 2 2 1 2 3
Заметка
Оригинальное условие и проверка решения на всех тестах — по ссылке на источник.
💡 Подсказка#
Открыть, если застрял(а) больше чем на 20 минут
Small-to-large слияние или DSU on tree (sack).