結果
| 問題 |
No.1424 Ultrapalindrome
|
| コンテスト | |
| ユーザー |
👑 SPD_9X2
|
| 提出日時 | 2021-03-12 21:42:02 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 206 ms / 2,000 ms |
| コード長 | 1,235 bytes |
| コンパイル時間 | 279 ms |
| コンパイル使用メモリ | 82,844 KB |
| 実行使用メモリ | 101,436 KB |
| 最終ジャッジ日時 | 2024-10-14 16:10:06 |
| 合計ジャッジ時間 | 4,760 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 29 |
ソースコード
"""
全ての葉の間の距離がひとしければおk
"""
import sys
from sys import stdin
from collections import deque
def NC_Dij(lis,start):
ret = [float("inf")] * len(lis)
ret[start] = 0
q = deque([start])
plis = [i for i in range(len(lis))]
while len(q) > 0:
now = q.popleft()
for nex in lis[now]:
if ret[nex] > ret[now] + 1:
ret[nex] = ret[now] + 1
plis[nex] = now
q.append(nex)
return ret,plis
N = int(stdin.readline())
lis = [ [] for i in range(N) ]
for loop in range(N-1):
a,b = map(int,stdin.readline().split())
a -= 1
b -= 1
lis[a].append(b)
lis[b].append(a)
leaf = []
for i in range(N):
if len(lis[i]) == 1:
leaf.append(i)
st = leaf[0]
dis,tmp = NC_Dij(lis,st)
ld = dis[leaf[1]]
for i in range(1,len(leaf)):
if dis[leaf[i]] != ld:
print ("No")
sys.exit()
if ld % 2 == 1:
if len(leaf) == 2:
print ("Yes")
else:
print ("No")
sys.exit()
for i in range(N):
if dis[i] == ld//2:
if len(lis[i]) == len(leaf):
print ("Yes")
else:
print ("No")
sys.exit()
print ("Yes")
SPD_9X2