File tree Expand file tree Collapse file tree 1 file changed +86
-0
lines changed Expand file tree Collapse file tree 1 file changed +86
-0
lines changed Original file line number Diff line number Diff line change @@ -351,6 +351,92 @@ public class Main {
351351```
352352### Python
353353
354+ ``` python
355+ from collections import defaultdict
356+
357+ father = list ()
358+
359+
360+ def find (u ):
361+ if u == father[u]:
362+ return u
363+ else :
364+ father[u] = find(father[u])
365+ return father[u]
366+
367+
368+ def is_same (u , v ):
369+ u = find(u)
370+ v = find(v)
371+ return u == v
372+
373+
374+ def join (u , v ):
375+ u = find(u)
376+ v = find(v)
377+ if u != v:
378+ father[u] = v
379+
380+
381+ def is_tree_after_remove_edge (edges , edge , n ):
382+ # 初始化并查集
383+ global father
384+ father = [i for i in range (n + 1 )]
385+
386+ for i in range (len (edges)):
387+ if i == edge:
388+ continue
389+ s, t = edges[i]
390+ if is_same(s, t): # 成環,即不是有向樹
391+ return False
392+ else : # 將s,t放入集合中
393+ join(s, t)
394+ return True
395+
396+
397+ def get_remove_edge (edges ):
398+ # 初始化并查集
399+ global father
400+ father = [i for i in range (n + 1 )]
401+
402+ for s, t in edges:
403+ if is_same(s, t):
404+ print (s, t)
405+ return
406+ else :
407+ join(s, t)
408+
409+
410+ if __name__ == " __main__" :
411+ # 輸入
412+ n = int (input ())
413+ edges = list ()
414+ in_degree = defaultdict(int )
415+
416+ for i in range (n):
417+ s, t = map (int , input ().split())
418+ in_degree[t] += 1
419+ edges.append([s, t])
420+
421+ # 尋找入度為2的邊,並紀錄其下標(index)
422+ vec = list ()
423+ for i in range (n - 1 , - 1 , - 1 ):
424+ if in_degree[edges[i][1 ]] == 2 :
425+ vec.append(i)
426+
427+ # 輸出
428+ if len (vec) > 0 :
429+ # 情況一:刪除輸出順序靠後的邊
430+ if is_tree_after_remove_edge(edges, vec[0 ], n):
431+ print (edges[vec[0 ]][0 ], edges[vec[0 ]][1 ])
432+ # 情況二:只能刪除特定的邊
433+ else :
434+ print (edges[vec[1 ]][0 ], edges[vec[1 ]][1 ])
435+ else :
436+ # 情況三: 原圖有環
437+ get_remove_edge(edges)
438+ ```
439+
354440### Go
355441
356442### Rust
You can’t perform that action at this time.
0 commit comments