Острови#275

Острови

5 секунд
256 мегабайтів
Складна

Ви відвідуєте парк, у якому островів. З кожного острова прокладено рівно один міст. Довжина цього мосту позначається L_i. Усього у парку мостів. Хоча кожен міст побудований між двома островами, тепер кожен міст можна перетинати в обох напрямках. Крім того, між кожною парою островів існує унікальний пором, що курсує туди й назад.

Оскільки ви віддаєте перевагу пішим прогулянкам замість поїздок поромом, ви хочете максимізувати суму довжин мостів, якими можете пройти, дотримуючись наведених нижче правил.

  1. Ви можете почати прогулянку з будь-якого острова.

  2. Не можна відвідувати жоден острів більше одного разу.

  3. У будь-який момент ви можете перейти з поточного острова на інший острів , який ще не відвідали. Перейти з на можна так:

    1. Пішки: це можливо, лише якщо між цими островами є міст. У цьому випадку довжина мосту додається до вашого маршруту.

    2. Пором: можна скористатися лише якщо неможливо дістатися з у будь-якою комбінацією мостів і/або вже використаних поромів (навіть через відвідані острови). Зверніть увагу: не обов'язково відвідати всі острови чи перетнути всі мости.

Дано мостів та їх довжини. Напишіть програму, яка обчислить максимальну можливу довжину маршруту мостами, дотримуючись описаних правил.

2 \leq N \leq 1\,000\,000
1 \leq L_i \leq 100\,000\,000

Вхідні дані

Ваша програма повинна зчитати з вхідного потоку:

  1. У першому рядку ціле число — кількість островів у парку. Острови пронумеровано від до .

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

Вихідні дані

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

Приклади

Приклад 1

Loading
Loading

Примітка

Примітка 1. Для деяких тестових даних відповідь може не вміщатися у -бітне ціле число. Щоб отримати повний бал, використовуйте у Pascal або long~long у C/C++.

Примітка 2. У середовищі тестування -бітні типи даних у Pascal зчитуються істотно повільніше, ніж -бітні типи, навіть якщо значення вміщуються у біти. Рекомендується використовувати для зчитування -бітні типи. Для деяких випадків на балів не перевищує .