在 Python 中查找最大网络等级的程序

假设有 n 个城市,并且有一些道路连接这些城市。每个roads[i] = [u, v]表示城市u和v之间有一条双向道路。现在考虑网络等级是直接连接到任一城市的道路总数。当一条道路直接连接到两个城市时,它只计算一次。而网络的最大网络等级是所有不同城市对的最大网络等级。因此,如果我们有不同的道路,我们必须找到整个网络的最大网络等级。

所以,如果输入像

那么输出将是 5,因为连接城市 1 和 2 有五种不同的方式

示例

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

from collections import defaultdict

def solve(roads):

   nodes = set()

   s = set()

   d = defaultdict(int)

   for x,y in roads:

      nodes.update([x,y])

      d[x]+=1

      d[y]+=1

      s.add((x,y))

   ans = 0

   n = len(nodes)

   l = list(range(n))

   l.sort(key=lambda x:d[x], reverse = True)

   threshold = min(d[l[0]],d[l[1]])

   for i in range(len(l)-1):

      for j in range(i+1,len(l)):

         if d[l[j]]<threshold:

            break

      curr = d[l[i]]+d[l[j]]

      if (l[i],l[j]) in s or (l[j],l[i]) in s:

         curr-=1

      ans = max(ans,curr)

   return ans

roads = [(0,1),(0,3),(1,2),(1,3),(2,3),(2,4)]

print(solve(roads))

输入

[(0,1),(0,3),(1,2),(1,3),(2,3),(2,4)]
输出结果
5

以上是 在 Python 中查找最大网络等级的程序 的全部内容, 来源链接: utcz.com/z/363226.html

回到顶部