eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Острови

Острови

\includegraphics{https://static.e-olymp.com/content/8e/8e76e21e23f0b735c19f0a5c00759fdbba7280ba.jpg} Ви приїхали у парк, у якому \textbf{N} островів. Від кожного з островів \textbf{i} колись побудували один міст до якогось іншого острову. Довжина такого мосту позначається \textbf{L_i}. Всього у парку \textbf{N} мостів. Хоча всі мости будували від одного острову до іншого, у даний час по кожному з мостів можна рухатись у довільному з двох напрямків. Крім цього, між кожними двома островами ходить один паром як туди, так і назад. Так як вам більше подобається ходити по мостам, ніж їздити на паромі, ви хочете максимізувати сумарну довжину мостів, по яким ви пройдете. При цьому необхідно враховувати наступне: \begin{enumerate} \item Починати рух можна з довільного з островів за вашим вибором. \item Забороняється відвідувати який-небудь з островів більше одного разу. \item В довільний момент ви можете переміститись з острову \textbf{S}, на якому ви заходитесь, на інший остров \textbf{D}, який ви ще не відвідували. Ви можете попасти з \textbf{S} на \textbf{D} наступним чином: \begin{enumerate} \item Пішки: це можливо, якщо між двома островами є міст. У цьому випадку довжина мосту додається до довжини раніше пройденого шляху. \item Паромом: ви можете скористатись цим способом лише у тому випадку, якщо острів \textbf{D} не можна досягнути з острова \textbf{S} при допомозі якої-небудь комбінації мостів і/або використаних раніше паромів. При перевірці можливсоті досягнення острова \textbf{D} з острова \textbf{S} слід розглядати всі можливі шляхи, включаючи шляхи, що проходять через острови, на яких ви вже були. Зверніть увагу, що немає необхідності відвідувати всі острови, і може бути, ще неможливо пройти по всім мостам. \end{enumerate} \end{enumerate} Напишіть програму, яка за заданими \textbf{N} мостами та їх довжинами обчислює максимальну довжину шляху, що задовільняє умовам, описаним вище. Довжина шляху визначається як сумарна довжина пройдених мостів. \textbf{2} <= \textbf{N} <= \textbf{1 000 000} (\textbf{N} -- кількість островів у парку) \textbf{1} <= \textbf{L_i} <= \textbf{100 000 000} (\textbf{L_i} -- довжина \textbf{i}-го мосту) \InputFile Ваша програма читає зі стандартного вводу наступні дані: \begin{enumerate} \item Рядок \textbf{1} містить ціле число \textbf{N} -- кількість островів у парку. Острови пронумеровані від \textbf{1} до \textbf{N} включно. \item Кажен з наступних \textbf{N} рядків описує один міст, при цьому \textbf{i}-ий рядок містить два цілих числа, відокремлених одним пропуском. Ці два числа описують міст, побудований від \textbf{i}-го острову. Перше число -- это номер острову, до якого будувався міст. Друге число -- це довжина мосту \textbf{L_i}. Ви можете вважати, що кінці довільного мосту знаходяться на різних островах. \end{enumerate} \OutputFile Ваша програма повинна вивести у стандартний вивід єдиний рядок, шо містить одне ціле число -- максимальну довжину шляху, який можна пройти. \textbf{Зауваження 1.} Для деяких з тестів відповідь не може бути обрахована з використанням \textbf{32}-бітного цілого типу. Щоб отримати повний бал по цій задачі, вам потрібно використовувати тип \textbf{int64} у мові Паскаль або тип \textbf{long long} у мові C/C++. \textbf{Зауваження 2.} При запуску програми на мові Паскаль у середовищі системи тестування, \textbf{64}-бітні цілі типи даних читаються зі стандартного потоку вводу набагато повільніше, ніж \textbf{32}-бітні цілі типи даних, навіть якщо зчитувані значення поміщаються у \textbf{32}-бітний цілий тип. Ми рекомендуємо вам використовувати при зчитуванні даних \textbf{32}-бітний цілий тип.
Ліміт часу 5 секунд
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
7
3 8
7 2
4 2
1 4
1 9
3 4
2 3
Вихідні дані #1
24
Джерело 2008 IOI