結果
問題 |
No.1254 補強への架け橋
|
ユーザー |
![]() |
提出日時 | 2020-10-09 22:55:51 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,006 bytes |
コンパイル時間 | 234 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 129,580 KB |
最終ジャッジ日時 | 2024-07-20 13:33:21 |
合計ジャッジ時間 | 30,953 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 121 RE * 2 |
ソースコード
n = int(input()) to = [[] for _ in range(n)] bmap = {} for i in range(1, n+1): a, b = map(int, input().split()) a -= 1 b -= 1 to[a].append(b) to[b].append(a) bmap[(a, b)] = bmap[(b, a)] = i num = [-1] * n low = [-1] * n visited = [False] * n ans = 0 nm = 1 def dfs(v, p=-1): global nm visited[v] = True num[v] = nm nm += 1 lw = num[v] for w in to[v]: if w == p: continue if not visited[w]: dfs(w, v) lw = min(lw, low[w]) else: lw = min(lw, num[w]) low[v] = lw dfs(0) ans = set(range(1, n+1)) visited = [False] * n def dfs2(v, p=-1): visited[v] = True for w in to[v]: if w == p: continue if not visited[w]: dfs2(w, v) if low[w] > num[v]: if (v, w) in bmap: tmp = bmap[(v, w)] if tmp in ans: ans.remove(tmp) dfs2(0) print(len(ans)) print(*ans)