考え方
DFSで帰りがけを見る.スタックで実装できる.
【関連】
非再帰 Euler Tour を Python でやる - Qiita
ABC284E - Count Simple Paths - 競プロはじめました
回答例
DFSをするためのseenと,すでにansに加えたかを管理するseen2を使った.N = int(input()) G = [[] for _ in range(N)] for i in range(N): c, *p = map(int, input().split()) if c == 0:continue for pp in p: pp -= 1 G[i].append(pp) ans = [] st = [~0, 0] seen = [False]*N seen2 = [False]*N while st: cur = st.pop() if cur >= 0: seen[cur] = True for chi in G[cur]: if seen[chi]:continue st.append(~chi) st.append(chi) else: if ~cur != 0: if seen2[~cur]: continue seen2[~cur] = True ans.append(~cur + 1) print(*ans)