10821. Звʼязна множина


Відправити розв'язок

Бали: 100
Time limit: 1.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Дано кілька точок на площині, деякі з яких з'єднані відрізками. Безліч точок називаються зв'язними, якщо з будь-якої точки можна перейти в будь-яку точку, переміщаючись тільки по відрізках (переходити з відрізка на відрізок можливо тільки в точках вихідної множини).

Можна за певну плату додавати нові відрізки (вартість додавання дорівнює довжині відрізка, що додається). Потрібно за мінімальну вартість зробити цю множину зв'язною.

Формат вхідних даних

У першому рядку вхідних даних міститься одне ціле число \(𝑁\) (\(1 ≤ 𝑁 ≤ 50\)) – кількість точок.

Далі в \(𝑁\) рядках записано по 2 натуральні числа – координати точок (координати не перевищують 100). Усі точки різні.

Далі дано число \(𝑀\) – кількість відрізків, що вже існують.

У наступних \(𝑀\) рядках записано по 2 числа – номери початку та кінця відповідного відрізка.

Формат вихідних даних

Вивести єдине число – мінімально можливу вартість доповнення з точністю 5 знаків після коми.

Приклад вхідних даних

3
1 1
1 2
10 1
1
2 1

Приклад вихідних даних

9.0

Коментарі

Ще немає коментарів.