本文共 1419 字,大约阅读时间需要 4 分钟。
??????????????????????k?????????????k?n????????????????????????n???????????
import sysfrom collections import dequefrom sys import stdindef main(): sys.setrecursionlimit(1 << 25) n = int(stdin.readline()) if n == 0: print(0) return edges = [[] for _ in range(n + 1)] for _ in range(n - 1): u, v = map(int, stdin.readline().split()) edges[u].append(v) edges[v].append(u) # Initialize size array size = [0] * (n + 1) visited = [False] * (n + 1) q = deque() q.append(1) visited[1] = True while q: u = q.popleft() size[u] = 1 for v in edges[u]: if not visited[v]: visited[v] = True q.append(v) size[u] += size[v] # Count frequency of each size freq = {} for i in range(1, n + 1): s = size[i] if s in freq: freq[s] += 1 else: freq[s] = 1 # Enumerate all divisors of n result = 0 for k in range(1, n + 1): if n % k == 0: result += freq.get(k, 0) print(result)if __name__ == "__main__": main() ?????????????????????????????????
转载地址:http://tojfk.baihongyu.com/