Dado um cacto , queremos ponderar suas bordas de tal maneira que
- Para cada vértice, a soma dos pesos das arestas incidentes no vértice não passa de 1.
- A soma de todos os pesos das arestas é maximizada.
Claramente, a resposta não passa de para vértices ( que é a soma de um vértice e é a soma de todas as arestas). Esse limite é possível para gráficos de ciclo ponderando cada aresta 1/2.
Encontrei um algoritmo ganancioso para árvores. Apenas atribua 1 às arestas incidentes às folhas e remova-as e seus vizinhos do gráfico em passes repetidos. Isso reduz o cacto a vários ciclos interconectados. Nesse ponto, eu assumi que os ciclos restantes não estavam interconectados e pesei cada extremidade 1/2. Isso obteve 9/10 casos de teste, mas é, obviamente, incompleto.
Então, como podemos resolver esse problema para os cactos em geral? Eu preferiria dicas a soluções completas, mas qualquer uma delas está bem.
Esta pergunta envolve um problema de um InterviewStreet CompanySprint . Eu já competi, mas gostaria de algumas reflexões sobre um problema (as soluções não são liberadas e tenho batido minha cabeça contra a parede por causa desse problema).