Solução por Thiago Mota
Conhecimento prévio:;
A primeira observação que temos é que como queremos separar em componentes de soma é necessário que a soma total das componentes seja
, pois se a soma total for diferente de
não existe maneira de dividir as componentes.
Imagine que nós removemos uma aresta e dividimos em duas componentes, a única soma possível de cada componente isolada também deve ser , pois se a soma das componentes isoladas forem diferente de
não existe maneira de divir em componentes menores com soma
.
Então, temos que remover arestas de forma que a soma sempre se mantenha , para isso basta escolher qualquer aresta que a soma das componentes resultantes continue sendo
. Como o problema é de minimizar o custo, basta escolher as
arestas de menor custo que mantenha a soma sendo
após a remoção dela. Segue o código: