atcoderで下記問題に対して
問題
下のコードで回答されている方がいて、
この18行目のdef文
dfs(to, x, color)
ここの処理が理解できず困っています。
ご教示よろしくお願いいたします。
python
1import sys 2sys.setrecursionlimit(1000000) 3 4n = int(input()) 5edge = [[] for i in range(n)] 6a = [0] * n 7b = [0] * n 8 9color_dict = {} 10k = 0 11def dfs(x, last = -1, ban_color = -1): 12 global k 13 color = 1 14 for to in edge[x]: 15 if to == last:continue 16 if color == ban_color:color += 1 17 color_dict[(x, to)] = color 18 dfs(to, x, color) 19 color += 1 20 k = max(k, color-1) 21 22 23for i in range(n-1): 24 a[i], b[i] = map(int, input().split()) 25 a[i] -= 1 26 b[i] -= 1 27 edge[a[i]].append(b[i]) 28 edge[b[i]].append(a[i]) 29 30 31dfs(0) 32print(k) 33 34 35for i in range(n-1): 36 if (a[i], b[i]) in color_dict: 37 print(color_dict[(a[i], b[i])]) 38 else: 39 print(color_dict[(b[i], a[i])])
回答1件
あなたの回答
tips
プレビュー