結果
問題 | No.1098 LCAs |
ユーザー | wattaihei |
提出日時 | 2020-06-26 23:04:46 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 538 ms / 2,000 ms |
コード長 | 741 bytes |
コンパイル時間 | 462 ms |
コンパイル使用メモリ | 82,164 KB |
実行使用メモリ | 129,872 KB |
最終ジャッジ日時 | 2024-07-04 23:29:05 |
合計ジャッジ時間 | 8,075 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
import sys input = sys.stdin.readline N = int(input()) graph = [[] for _ in range(N)] for _ in range(N-1): a, b = map(int, input().split()) graph[a-1].append(b-1) graph[b-1].append(a-1) D = [-1]*N D[0] = 0 Childs = [1]*N ans = [-1]*N stack = [0] while stack: p = stack.pop() if p >= 0: stack.append(~p) for np in graph[p]: if D[np] == -1: D[np] = D[p] + 1 stack.append(np) else: p = ~p t1 = 0 t2 = 0 for np in graph[p]: if D[np] > D[p]: t1 += Childs[np] t2 += Childs[np]**2 Childs[p] += Childs[np] ans[p] = (t1**2 - t2) + 2*t1 + 1 print(*ans, sep="\n")