1

Тема: сложная задача

Fourth Great and Bountiful Human Empire is developing a transconduit tunnel
network connecting all it's planets. The Empire consists of N planets,
represented as points in the 3D space. The cost of forming a transconduit
tunnel between planets A and B is:
TunnelCost[A,B]=min{|xa-xb|, |ya-yb|, |za-zb|}
where (xa, ya, za) are 3D coordinates of planet A, and (xb, yb, zb) are
coordinates of planet B. The Empire needs to build exactly N - 1 tunnels in
order to fully connect all planets, either by direct links or by chain of links.
You need to come up with the lowest possible cost of successfully completing
this project.
INPUT
The first line of input contains one integer N (1 ? N ? 100 000), number of
planets.
Next N lines contain exactly 3 integers each. All integers are between -10^9 and 10^9 inclusive. Each line contains the x, y, and z coordinate of one planet (in order).
No two planets will occupy the exact same point in space.
OUTPUT
The first and only line of output should contain the minimal cost of forming
the network of tunnels.
SAMPLE TEST CASES
input
5
11 -15 -15
14 -5 -15
-1 -1 -5
10 -4 -1
19 -4 19
output
4

2

Re: сложная задача

Со вчерашнего COCI smile
Не сказал бы что она сложная, решение там довольно простое. Отсортируем все точки по иксу и выпишем все пары точек, которые соседние в такой сортировке. Затем то же самое сделаем по игреку и по зеду.

Получим граф с Н вершинами и 3Н ребрами. При помощи алгоритма Крускала построим миностов и его вес и будет ответом. Подумайте, почему это правильно (там довольно просто) smile

3 Отредактировано coder.ua (2010-04-28 18:37:31)

Re: сложная задача

оО
Хорошая идея=)
Я думаю что это правильно из-за того,что вершины которые а МОДе будут соединены будут "соседями" либо по х,либо по у,либо z.Даже если в одной из сортировок мы выбрали не "правильное" ребро между вершинами u и v ,то одна из вершин которая будет лежать на отрезке num1 и num2(номерами u и v)  в других сортировках станет промежуточной в МОДе между u и v(но никакая другая!!!(только между нум1 и нум2!!!)).
Это правильно? roll

4

Re: сложная задача

Ну по сути да. Если между вершинами A и B кратчайшее расстояние равно, например, |y1-y2| и если между ними есть какая-то вершина С в отсортированном по игреку массиве, то dist(A,C)+dist(C,B) не будет превышать dist(A,B)=|y1-y2|, поэтому в таком случае мы можем вместо прямого ребра взять 2 ребра AC и CB.