結果
問題 |
No.1103 Directed Length Sum
|
ユーザー |
![]() |
提出日時 | 2020-07-04 02:32:57 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,711 ms / 3,000 ms |
コード長 | 788 bytes |
コンパイル時間 | 153 ms |
コンパイル使用メモリ | 82,604 KB |
実行使用メモリ | 358,896 KB |
最終ジャッジ日時 | 2024-09-17 07:00:04 |
合計ジャッジ時間 | 15,121 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 22 |
ソースコード
import sys read = sys.stdin.buffer.read readline = sys.stdin.buffer.readline readlines = sys.stdin.buffer.readlines n = int(readline()) ab = list(map(int,read().split())) mod = 10**9 + 7 it = iter(ab) root = (n+1)*n//2 parent = [0] * (n+1) links = [[] for _ in range(n+1)] for a,b in zip(it,it): links[a].append(b) parent[b] = a root -= b tp = [root] stack = [root] while(stack): next = [] while(stack): i = stack.pop() for j in links[i]: next.append(j) tp.append(j) stack = next[::] score = [[0,0] for _ in range(n+1)] ans = 0 for i in tp[::-1]: ans += score[i][0] par = parent[i] score[par][0] += score[i][0] + score[i][1] + 1 score[par][0] %= mod score[par][1] += score[i][1] + 1 print(ans%mod)