結果
| 問題 |
No.277 根掘り葉掘り
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-03-12 12:04:29 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 1,245 ms / 3,000 ms |
| コード長 | 756 bytes |
| コンパイル時間 | 119 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 41,752 KB |
| 最終ジャッジ日時 | 2024-06-30 00:20:30 |
| 合計ジャッジ時間 | 12,095 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 18 |
ソースコード
n = int(input())
edges = [[] for _ in range(n + 1)]
for _ in range(n - 1):
x, y = [int(i) for i in input().split()]
edges[x].append(y)
edges[y].append(x)
zero_nodes = [1] + [i for i, v in list(enumerate(edges))[2:] if len(v) == 1]
node_lengths = [None] * (n + 1)
checked_nodes = [False] * (n + 1)
queue = []
for z in zero_nodes:
queue.append(z)
checked_nodes[z] = True
node_lengths[z] = 0
while True:
i = queue.pop(0)
next_root_length = node_lengths[i] + 1
for t in edges[i]:
if checked_nodes[t]:
continue
queue.append(t)
checked_nodes[t] = True
node_lengths[t] = next_root_length
if len(queue) == 0:
break
node_lengths.pop(0)
print(*node_lengths, sep='\n')