結果
| 問題 |
No.1718 Random Squirrel
|
| コンテスト | |
| ユーザー |
sasa8uyauya
|
| 提出日時 | 2025-07-20 04:04:00 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 448 ms / 2,000 ms |
| コード長 | 843 bytes |
| コンパイル時間 | 486 ms |
| コンパイル使用メモリ | 82,240 KB |
| 実行使用メモリ | 106,932 KB |
| 最終ジャッジ日時 | 2025-07-20 04:04:10 |
| 合計ジャッジ時間 | 9,467 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 31 |
ソースコード
n,k=map(int,input().split())
e=[[] for i in range(n)]
for i in range(n-1):
u,v=map(int,input().split())
u-=1
v-=1
e[u]+=[v]
e[v]+=[u]
d=[0]*n
for v in list(map(int,input().split())):
d[v-1]=1
v=[0]*n
u1=[0]*n
u2=[0]*n
u3=[0]*n
u4=[0]*n
q=[0]
while len(q)>0:
s=q[-1]
if v[s]==0:
v[s]=1
q+=[t for t in e[s] if v[t]==0]
else:
for t in e[s]:
if v[t]==0 and u3[t]>0:
u3[s]+=u3[t]
u2[s]=max(u2[s],u2[t]+1)
u1[s]+=u1[t]+2
u3[s]+=d[s]
v[s]=0
q.pop()
q=[0]
v[0]=1
for s in q:
u5=sorted([u2[t]+1 for t in e[s] if v[t]==0 and u3[t]>0]+[u4[s]]+[0,0])[-2:][::-1]
for t in e[s]:
if v[t]==0:
if k-u3[t]>0:
u4[t]=u5[u5[0]==u2[t]+1 and u3[t]>0]+1
u1[t]+=u1[s]-(u1[t]+2)*(u3[t]>0)+2
q+=[t]
v[t]=1
for i in range(n):
print(u1[i]-max(u2[i],u4[i]))
sasa8uyauya