Інверсії в дереві#13094

Інверсії в дереві

3 секунди
256 мегабайтів

Дано дерево з вершинами, пронумерованими від до . Коренем дерева є вершина .

У кожній вершині записано число p_i. Усі ці числа різні та утворюють перестановку чисел від до .

Назвемо інверсією пару вершин , для якої виконуються обидві умови:

Дозволено виконати не більше однієї операції: вибрати будь-яке ребро дерева та поміняти місцями числа, записані в його кінцях. Структура дерева при цьому не змінюється.

Знайдіть найбільшу можливу кількість інверсій після виконання не більше однієї операції.

Вхідні дані

У першому рядку задано ціле число (1 \leq n \leq 2 \cdot 10^5) — кількість вершин дерева.

У другому рядку задано цілих чисел p_1,p_2,\ldots,p_n (1 \leq p_i \leq n) — мітки вершин. Гарантується, що всі числа різні.

У кожному з наступних n-1 рядків задано два цілі числа та (1 \leq u,v \leq n, u \ne v), що означають наявність ребра між вершинами та .

Гарантується, що заданий граф є деревом.

Вихідні дані

Виведіть одне ціле число — найбільшу можливу кількість інверсій.

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Приклад 3

Loading
Loading

Примітка

У першому прикладі дерево складається з однієї вершини. Інверсій немає, а виконати операцію неможливо. Тому відповідь дорівнює .

У другому прикладі можна поміняти місцями числа у вершинах та . Після цього у вершині буде записано , а в усіх інших вершинах — менші числа. Оскільки вершина є предком кожної з решти чотирьох вершин, отримаємо інверсії. Більшої кількості досягти неможливо.

У третьому прикладі вершини утворюють шлях –––, а записані в них числа дорівнюють 4,3,2,1. Кожна пара різних вершин є інверсією, тому їхня кількість дорівнює . Це найбільша можлива кількість для чотирьох вершин, тож операцію виконувати не потрібно.

Оцінювання

  1. балів — 1 \leq n \leq 10.

  2. балів — дерево є зіркою з центром у вершині .

  3. балів — дерево є простим шляхом, одним із кінців якого є вершина .

  4. балів — 1 \leq n \leq 3000.

  5. балів — без додаткових обмежень.