QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 256 MB Total points: 100

#114. Строительство шоссе

Statistics

В королевстве JOI есть $N$ городов, пронумерованных от $1$ до $N$. Город $1$ является столицей. У каждого города есть величина, называемая оживлённостью; изначально оживлённость города $i$ ($1\le i\le N$) равна $C_i$.

Дорога в королевстве JOI соединяет два различных города и допускает движение в обоих направлениях. Изначально в королевстве JOI нет дорог. Вы запланировали строительство $N-1$ дорог. Строительство $j$-й дороги ($1\le j\le N-1$) планируется провести следующим образом.

  • Выбираются два города $A_j$ и $B_j$ так, что по уже построенным к этому моменту дорогам можно добраться из города $1$ в город $A_j$, но нельзя добраться из города $1$ в город $B_j$.
  • Вы строите дорогу, соединяющую города $A_j$ и $B_j$. Стоимость этого строительства равна количеству пар городов $(s,t)$, удовлетворяющих следующим условиям:

Города $s$ и $t$ лежат на кратчайшем пути между городом $1$ и городом $A_j$; при движении из города $1$ в город $A_j$ город $s$ встречается раньше города $t$; оживлённость города $s$ строго больше оживлённости города $t$.

Здесь к городам, лежащим на пути между городом $1$ и городом $A_j$, относятся также город $1$ и город $A_j$. Обратите внимание, что кратчайший путь между городом $1$ и городом $A_j$ единственен.

  • Оживлённость всех городов, лежащих на пути между городом $1$ и городом $A_j$, становится равной оживлённости города $B_j$.

Вы хотите узнать стоимость каждого строительства.

Задание

По данным о городах и строительстве дорог напишите программу, вычисляющую стоимость каждого строительства.

Входные данные

Прочитайте следующие данные из стандартного ввода.

  • Первая строка содержит целое число $N$. Это означает, что в королевстве JOI есть $N$ городов.
  • Вторая строка содержит $N$ целых чисел $C_1,C_2,\ldots,C_N$, разделённых пробелами. Это означает, что изначальная оживлённость города $i$ ($1\le i\le N$) равна $C_i$.
  • $j$-я строка ($1\le j\le N-1$) из следующих $N-1$ строк содержит два целых числа $A_j,B_j$, разделённых пробелом. Это означает, что для строительства $j$-й дороги выбраны города $A_j$ и $B_j$.

Выходные данные

Выведите $N-1$ строк в стандартный вывод. В $j$-й строке ($1\le j\le N-1$) выведите стоимость строительства $j$-й дороги.

Ограничения

Все входные данные удовлетворяют следующим условиям.

  • $1\le N\le 100\,000$.
  • $1\le C_i\le 1\,000\,000\,000$ ($1\le i\le N$).
  • $1\le A_j\le N$ ($1\le j\le N-1$).
  • $1\le B_j\le N$ ($1\le j\le N-1$).
  • По дорогам, построенным до строительства $j$-й дороги, можно добраться из города $1$ в город $A_j$, но нельзя добраться из города $1$ в город $B_j$ ($1\le j\le N-1$).

Подзадачи

Всего есть 3 подзадачи. Баллы и дополнительные ограничения для каждой подзадачи приведены ниже.

Подзадача 1 [7 баллов]

  • $N\le 500$.

Подзадача 2 [9 баллов]

  • $N\le 4000$.

Подзадача 3 [84 балла]

Дополнительных ограничений нет.

Примеры

Входные данные 1

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

Выходные данные 1

0
0
0
2

Примечание

В первом примере строительство происходит следующим образом:

  • При первом строительстве нет пар $(s,t)$, удовлетворяющих условиям, поэтому стоимость равна $0$. Строится дорога между городами $1$ и $2$, и оживлённость города $1$ становится равной $2$.
  • При втором строительстве также нет пар $(s,t)$, удовлетворяющих условиям, поэтому стоимость равна $0$. Строится дорога между городами $2$ и $3$, и оживлённость городов $1$ и $2$ становится равной $3$.
  • При третьем строительстве также нет пар $(s,t)$, удовлетворяющих условиям, поэтому стоимость равна $0$. Строится дорога между городами $2$ и $4$, и оживлённость городов $1$ и $2$ становится равной $4$.
  • При четвёртом строительстве условиям удовлетворяют две пары: $(s,t)=(1,3),(2,3)$, поэтому стоимость равна $2$. Строится дорога между городами $3$ и $5$, и оживлённость городов $1$, $2$ и $3$ становится равной $5$.

Входные данные 2

10
1 7 3 4 8 6 2 9 10 5
1 2
1 3
2 4
3 5
2 6
3 7
4 8
5 9
6 10

Выходные данные 2

0
0
0
1
1
0
1
2
3

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.