実現したいこと
atcoder beginner contest289のB問題"レ"を解いています。
https://atcoder.jp/contests/abc289/tasks/abc289_b
Python (3.8.2) においてUnion-Findを用いて実装しようとしたのですが、1つのテストケースでWAが出ています(サンプルは3つとも試しました)。
自分のソースコードのどこが誤っていてWAが出ているのかが理解できません。
間違いを教えてくださるとありがたいです。よろしくお願いいたします。
前提
テストケースは現時点では公開されていません。
発生している問題・エラーメッセージ
テストケースにおけるWA1つ
該当のソースコード
Python
1N,M=map(int,input().split()) 2if M>0: 3 A=list(map(int, input().split())) 4 5 6# Union-Find 木 7class UnionFind(): 8 def __init__(self,N): 9 self.par=[-1]*N 10 self.siz=[1]*N 11 self.max_node=[_ for _ in range(N)] 12 self.min_node=[_ for _ in range(N)] 13 def root(self,x): 14 if self.par[x]==-1: 15 return x 16 else: 17 self.par[x]=self.root(self.par[x]) 18 return self.par[x] 19 20 def issame(self,x,y): 21 return self.root(x)==self.root(y) 22 23 def unite(self,x,y): 24 rootx=self.root(x) 25 rooty=self.root(y) 26 if rootx != rooty: 27 if self.siz[rootx]>=self.siz[rooty]: 28 self.par[rooty]=rootx 29 self.siz[rootx]+=self.siz[rooty] 30 self.max_node[rootx]=max(self.max_node[rootx],self.max_node[rooty]) 31 self.min_node[rootx]=min(self.min_node[rootx],self.min_node[rooty]) 32 33 elif self.siz[rootx]<self.siz[rooty]: 34 self.par[rootx]=rooty 35 self.siz[rooty]+=self.siz[rootx] 36 self.max_node[rooty]=max(self.max_node[rootx],self.max_node[rooty]) 37 self.min_node[rooty]=min(self.min_node[rootx],self.min_node[rooty]) 38 39 40 def size(self,x): 41 return self.siz[self.root(x)] 42 43 def get_max_node(self,x): 44 return self.max_node[self.root(x)] 45 46 def get_min_node(self,x): 47 return self.min_node[self.root(x)] 48 49UF=UnionFind(N) 50for m in range(M): 51 UF.unite(A[m]-1,A[m]) 52list3=[] 53for n in range(N): 54 list3.append(UF.root(n)) 55list3.sort() 56set1=set(list3) 57 58max1=[] 59min1=[] 60for s in set1: 61 #print(s) 62 max1.append(UF.get_max_node(s)+1) 63 min1.append(UF.get_min_node(s)+1) 64#print(min1) 65list1=[] 66for s in range(len(set1)): 67 list2=[] 68 for x in range(min1[s],max1[s]+1): 69 list2.append(x) 70 for x in reversed(list2): 71 list1.append(x) 72print(*list1)
試したこと
サンプルケースで期待される出力が得られることを確認しました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー