結果
問題 |
No.1103 Directed Length Sum
|
ユーザー |
![]() |
提出日時 | 2020-07-05 20:54:37 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 740 bytes |
コンパイル時間 | 145 ms |
コンパイル使用メモリ | 82,244 KB |
実行使用メモリ | 364,744 KB |
最終ジャッジ日時 | 2024-09-22 21:25:26 |
合計ジャッジ時間 | 27,014 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 TLE * 1 |
ソースコード
import sys input=lambda: sys.stdin.readline().rstrip() n=int(input()) deg=[0]*n edge=[[] for _ in range(n)] edge_r=[[] for _ in range(n)] for _ in range(n-1): a,b=map(int,input().split()) edge[a-1].append(b-1) edge_r[b-1].append(a-1) deg[b-1]+=1 from collections import deque TS = list(v for v in range(n) if deg[v]==0) deq = deque(TS) used = [0]*n while deq: v = deq.popleft() for t in edge[v]: deg[t] -= 1 if deg[t]==0: deq.append(t) TS.append(t) L,R=[0]*n,[0]*n for i in range(n): v=TS[i] w=TS[n-1-i] for g in edge[v]: L[g]+=L[v]+1 for g in edge_r[w]: R[g]+=R[w]+1 ans=0 mod=10**9+7 for i in range(n): l=L[i]+1 r=0 for g in edge[i]: r+=R[g]+1 ans=(ans+l*r)%mod print(ans)