找出最小成本的程序,以便公民可以进入 Python 市场

假设有 n 个城市和连接城市的 m 条道路。人民的公民需要可以购买商品的市场。现在,城市中没有市场,城市之间的道路是construction.A双向的,如果(i)城市有市场,两个城市之间可以建设;(ii) 城市可以通过有市场的道路访问。修建一条道路的成本是 x,建造一个市场的成本是 y,它们是给定的。我们必须找出为每个城市的公民提供市场准入的最低成本。数组“城市”包含有关哪些城市可以通过公路连接的城市的信息。

所以,如果输入像 n = 4, m = 3, x = 1, y = 2, city = [[1, 2], [2, 3], [3, 4]],那么输出将是4.

在这里,我们可以看到 1、2、3 和 4 四个城市。如果在城市 1 建一个市场,并且在 (1, 4) 和 (1,3) 之间再建两条道路,总成本将为 2 + 1 + 1 = 4。这是最低成本。

示例

让我们看看以下实现以更好地理解 -

from collections import defaultdict, deque

def solve(n, m, x, y, cities):

   if x <= y:

      return n * x

   else:

      adj_list = defaultdict(list)

      for city in cities:

         city1 = city[0]

         city2 = city[1]

         adj_list[city1].append(city2)

         adj_list[city2].append(city1)

      temp = [True] * (n + 1)

      value = 0

      dq = deque()

      for cur in range(1, n + 1):

         if temp[cur]:

            value += x

            dq.append(cur)

            temp[cur] = False

            while dq:

               for i in adj_list[dq.popleft()]:

                  if temp[i]:

                     dq.append(i)

                     temp[i] = False

                     value += y

      return value

print(solve(4, 3, 1, 2, [[1, 2], [2, 3], [3, 4]]))

输入

4, 3, 2, 1, [[1, 2], [2, 3], [3, 4]]
输出结果
4

以上是 找出最小成本的程序,以便公民可以进入 Python 市场 的全部内容, 来源链接: utcz.com/z/363270.html

回到顶部