リンク内容
上の問題のpyhonのlowlink手法での解答や解説がいただきたいです、、
Atcoderの上のような問題で、何やらlowlinkを使うのが計算量的によいらしいと聞き作ろうとしました。けれども自力では作れず、ネットにあるコードや解説サイトもpythonで書かれているものがなく困っています、、どなたかご教授ください、、
自分が足掻いた痕跡は以下の通りです。参考までに、、
python3
1[N,M]=list(map(int,input().split())) 2nlist=[] 3tlist=[] 4went=[] 5ord={} 6s=0 7low=[] 8class Node: 9 def __init__(self,x): 10 self.val=x 11 self.surrlist=[] 12 self.unusedsurr=[] 13for i in range(M): 14 nlist.append(Node(i+1)) 15for i in range(M): 16 [a,b]=list(map(int,input().split())) 17 tlist.append([a,b]) 18 nlist[a-1].surrlist.append(nlist[b-1]) 19 nlist[b-1].surrlist.append(nlist[a-1]) 20 nlist[a-1].unusedsurr.append(nlist[b-1]) 21 nlist[b-1].unusedsurr.append(nlist[a-1]) 22def travel(node): 23 ord.setdefault(node.val,len(went)) 24 went.append(node) 25 for i in node.surrlist: 26 if i not in went: 27 node.unusedsurr.remove(i) 28 i.unusedsurr.remove(node) 29 travel(i) 30travel(nlist[0]) 31for i in tlist: 32 u,v=i[0],i[1] 33 for j in nlist[v-1].unusedsurr: 34 low.append(ord[j.val]) 35 if len(low)>0: 36 if ord[u]<min(low): 37 s+=1 38print(s)
あなたの回答
tips
プレビュー