E - A Gift From the Stars Editorial by kyopro_friends
レベル \(k\) の星は、次数が \(k\) の頂点を \(1\) 個、次数が \(1\) の頂点を \(k\) 個持ちます。
問題文中の操作で星のなす森に辺を加える操作では次数 \(3\) 以上の頂点の個数はそれぞれ変化しません。
よって、与えられたグラフの次数 \(3\) 以上の頂点の個数を数えることで、元々あったレベル \(3\) 以上の星の個数がわかります。レベル \(2\) の星の個数は、残りの頂点数を数えることでわかります。
実装例 (Python)
N=int(input())
deg=[0]*N
for _ in range(N-1):
a,b=map(int,input().split())
deg[a-1]+=1
deg[b-1]+=1
cnt=[0]*N
for x in deg: cnt[x]+=1
ans=[]
vs=0
for i,x in enumerate(cnt):
if i>=3:
vs+=(i+1)*x
ans+=[i]*x
ans=[2]*((N-vs)//3)+ans
print(*ans)
posted:
last update: