QOJ.ac

QOJ

Time Limit: 10 s Memory Limit: 2048 MB Total points: 100 Difficulty: [show]

#4408. Płonąca kula Na

Statistics

Dane jest ukorzenione drzewo o $n$ wierzchołkach oraz $m$ par $(x_i,y_i)$, gdzie $x_i,y_i$ są wierzchołkami drzewa.

Dla wierzchołków $a,b$ definiujemy $D(a,b)$ jako liczbę wierzchołków należących do poddrzewa o korzeniu $a$, lecz nienależących do poddrzewa o korzeniu $b$.

Należy znaleźć minimalne drzewo rozpinające grafu pełnego, którego wierzchołkami są te pary, a waga krawędzi między $(x_i,y_i)$ i $(x_j,y_j)$ wynosi $D(x_i,x_j)+D(x_j,x_i)+D(y_i,y_j)+D(y_j,y_i)$.

Wejście

Dane należy odczytać ze standardowego wejścia.

Pierwszy wiersz zawiera dwie liczby $n,m$.

Następny wiersz zawiera $n-1$ liczb. Liczba na pozycji $i$ oznacza rodzica $f_{i+1}$ wierzchołka o numerze $i+1$. Gwarantowane jest $f_{i+1}< i+1$.

W kolejnych $m$ wierszach wiersz $i$ zawiera dwie liczby $x_i,y_i$, opisujące jedną z danych par.

Wyjście

Wynik należy wypisać na standardowe wyjście.

Wypisz jedną liczbę całkowitą — sumę wag krawędzi minimalnego drzewa rozpinającego.

Przykład

Wejście 1

5 4
1 2 3 3
3 5
2 2
5 2
2 5

Wyjście 1

7

Uwagi

Minimalne drzewo rozpinające zawiera krawędzie $(1,4,1),(2,3,3),(2,4,3)$. Trójka oznacza kolejno numer pierwszej pary, numer drugiej pary i wagę krawędzi. Suma wag wynosi $7$.

Podzadania

Dla $10\%$ danych zachodzi $1\le n,m\le 1000$.

Dla kolejnych $10\%$ danych zachodzi $1\le m\le 2\times 10^4$.

Dla kolejnych $10\%$ danych zachodzi $1\le m\le 5\times 10^4$.

Dla kolejnych $20\%$ danych zachodzi $m=n^2$, a wszystkie pary są różne.

Dla kolejnych $10\%$ danych dla każdego $i=2\cdots n$ zachodzi $f_i=i-1$.

Dla kolejnych $10\%$ danych dla każdego $i=2\cdots n$ zachodzi $f_i=1$.

Dla $100\%$ danych zachodzi $1\le n\le 10^6,1\le m\le 10^5$. Dla każdego $i=1,2,\dots n-1$ zachodzi $1\le f_{i+1} < i+1$. Dla każdego $i=1,2,\dots m$ zachodzi $1\le x_i,y_i\le n$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.