Минимальные повреждающие затраты на графике

Нам дан граф G (V,E )с N узлами (пронумерованными от 0 до N -1 )и ровно (N -1)двухсторонние -ребра.

Каждое ребро в графе имеет положительную стоимость C (u,v)(Вес кромки ).

Весь граф таков, что существует уникальный путь между любой парой узлов.

Нам также дан Список L номеров узлов, в которых размещены бомбы.

Наша цель состоит в том, чтобы повредить/удалить ребро из графа таким образом, чтобы после повреждения/удаления ребер из графа не было никакой связи между бомбами--

то есть после повреждения между любыми двумя бомбами нет пути .

Стоимость повреждения Края (u,v)= Вес ребра (u,v).

Итак, мы должны повредить эти ребра так, чтобы общая стоимость повреждения была минимальной .

Пример:

Total Nodes=N=5 
Total Bomb=Size of List L=3

List L={2,4,0}//Thats is at node number 2,4 and 0 bomb is placed...

Total Edges =N-1=4 edges are::

u v Edge-Weight

2 1 8

1 0 5

2 4 5

1 3 4



In this case the answer is ::
Total Damaging cost =(Edge Weight (2,4) + Edge Weight(0,1))
           =5+5=10.

So when we remove the edge connecting node (2,4),
and the edge connecting node (0,1),there is no connection left 
between any pair of machines in List {2,4,0};

Note any other,combinations of edges(that  we damaged ) to achieve the
target goal,needs more than 10 unit cost.  

enter image description here

Constraints::
N(ie. Number of Nodes) <= 100,000
ListSize |L|(ie. Number of Bombs) <= N
1 <=Edge cost(u,v) <= 1000,000

Что я сделал?

До сих пор я не нашел эффективного способа :(.

Далее, так как количество узлов равно N, количество ребер ровно N-1и весь граф таков, что существует Уникальный путь между любой парой узлов, я получил вывод, что граф представляет собой ДЕРЕВО.

Я пытался модифицировать алгоритм Крускала, но и это мне не помогло.

Спасибо!

8
задан Joel 3 November 2013 в 00:24
поделиться