結果
問題 | No.1424 Ultrapalindrome |
ユーザー |
👑 ![]() |
提出日時 | 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 sysfrom sys import stdinfrom collections import dequedef NC_Dij(lis,start):ret = [float("inf")] * len(lis)ret[start] = 0q = 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] + 1plis[nex] = nowq.append(nex)return ret,plisN = int(stdin.readline())lis = [ [] for i in range(N) ]for loop in range(N-1):a,b = map(int,stdin.readline().split())a -= 1b -= 1lis[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")