We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
def min_delivery_distance(n, letters, roads):
# Construir o grafo (lista de adjacências)
graph = [[] for _ in range(n)]
for u, v, w in roads:
graph[u - 1].append((v - 1, w))
graph[v - 1].append((u - 1, w))
# Função DFS para calcular distâncias
def dfs(start, end, visited, current_dist):
if start == end:
return current_dist
visited[start] = True
min_dist = float('inf')
for neighbor, weight in graph[start]:
if not visited[neighbor]:
new_dist = dfs(neighbor, end, visited[:], current_dist + weight)
min_dist = min(min_dist, new_dist)
return min_dist
# Calcular distâncias entre todas as cidades de entrega
dist = {}
for i in range(len(letters)):
for j in range(i + 1, len(letters)):
start = letters[i] - 1
end = letters[j] - 1
visited = [False] * n
distance = dfs(start, end, visited, 0)
dist[(letters[i], letters[j])] = distance
dist[(letters[j], letters[i])] = distance
# Gerar todas as permutações e calcular a distância mÃnima
min_distance = float('inf')
for permutation in itertools.permutations(letters):
current_distance = 0
for i in range(len(permutation) - 1):
current_distance += dist[(permutation[i], permutation[i + 1])]
min_distance = min(min_distance, current_distance)
return min_distance
if name == 'main':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
n, k = map(int, input().rstrip().split())
letters = list(map(int, input().rstrip().split()))
roads = []
for _ in range(n - 1):
roads.append(list(map(int, input().rstrip().split())))
result = min_delivery_distance(n, letters, roads)
fptr.write(str(result) + '\n')
fptr.close()
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Jeanie's Route
You are viewing a single comment's thread. Return to all comments →
A questão apresentada descreve um problema de roteamento em um grafo ponderado, onde Jeanie, uma carteira, precisa entregar cartas em diferentes cidades de Byteland. O objetivo é encontrar a distância mÃnima que Jeanie precisa percorrer para entregar todas as cartas.
POREM SOMENTE COMPILA ERRO :
import math import os import sys import itertools
def min_delivery_distance(n, letters, roads): # Construir o grafo (lista de adjacências) graph = [[] for _ in range(n)] for u, v, w in roads: graph[u - 1].append((v - 1, w)) graph[v - 1].append((u - 1, w))
if name == 'main': fptr = open(os.environ['OUTPUT_PATH'], 'w')