from itertools import permutations
def traveling_salesman(cities, distances):
n = len(cities)
min_distance = float('inf')
best_route = None
for route in permutations(cities):
current_distance = 0
for i in range(n):
current_distance += distances[route[i]][route[(i + 1) % n]]
if current_distance < min_distance:
min_distance = current_distance
best_route = route
return best_route, min_distance
if __name__ == "__main__":
cities = ['A', 'B', 'C', 'D']
distances = {
'A': {'A': 0, 'B': 10, 'C': 15, 'D': 20},
'B': {'A': 10, 'B': 0, 'C': 35, 'D': 25},
'C': {'A': 15, 'B': 35, 'C': 0, 'D': 30},
'D': {'A': 20, 'B': 25, 'C': 30, 'D': 0}
}
best_route, min_distance = traveling_salesman(cities, distances)
print(f"Best Route: {' -> '.join(best_route)}")
print(f"Minimum Distance: {min_distance}")