You are viewing a single comment's thread. Return to all comments →
Python
class Graph: def __init__(self): self.adj_list = {} def add_edge(self, u, v): if u not in self.adj_list: self.adj_list[u] = [] if v not in self.adj_list: self.adj_list[v] = [] self.adj_list[u].append(v) self.adj_list[v].append(u) def add_city(self, u): if u not in self.adj_list: self.adj_list[u] = [] def dfs(self, start, visited): visited.add(start) print("Visitando cidade", start) for neighbor in self.adj_list[start]: if neighbor not in visited: self.dfs(neighbor, visited) def roadsAndLibraries(n, c_lib, c_road, cities): if c_road >= c_lib: return n * c_lib else: g = Graph() visited_cities = set() groups = [] for city in range(1, n+1): g.add_city(city) for city in cities: g.add_edge(city[0],city[1]) for city in range(1,n+1): if city not in visited_cities: current_group = set() g.dfs(city, current_group) groups.append(current_group) visited_cities.update(current_group) total_cost = 0 for group in groups: num_cities = len(group) lib_cost = num_cities * c_lib road_cost = c_lib + (num_cities - 1) * c_road total_cost += min(lib_cost, road_cost) return total_cost
Seems like cookies are disabled on this browser, please enable them to open this website
Roads and Libraries
You are viewing a single comment's thread. Return to all comments →
Python