3067.在带权树网络中统计可连接服务器对数目
链接:3067.在带权树网络中统计可连接服务器对数目
难度:Medium
标签:树、深度优先搜索、数组
简介:请你返回一个长度为 n 的整数数组 count ,其中 count[i] 表示通过服务器 i 可连接 的服务器对的 数目 。
题解 1 - python
- 编辑时间:2024-06-04
- 执行用时:797ms
- 内存消耗:18.23MB
- 编程语言:python
- 解法介绍:模拟。
class Solution:
def countPairsOfConnectableServers(self, edges: List[List[int]], signalSpeed: int) -> List[int]:
nodes = [[] for _ in range(len(edges) + 1)]
for n1, n2, w in edges:
nodes[n1].append((n2, w))
nodes[n2].append((n1, w))
def dfs(cur: int, prev: int, sum: int) -> int:
res = 0
if sum % signalSpeed == 0: res += 1
for next, w in nodes[cur]:
if next != prev:
res += dfs(next, cur, sum + w)
return res
def get_cnt(cur: int) -> int:
if len(nodes[cur]) == 1: return 0
arr = [dfs(next, cur, w) for next, w in nodes[cur]]
vsum = sum(arr)
res = 0
for v in arr:
vsum -= v
res += v * vsum
return res
return [get_cnt(i) for i in range(len(nodes))]