結果
問題 | No.1254 補強への架け橋 |
ユーザー |
|
提出日時 | 2020-10-09 23:46:13 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 505 ms / 2,000 ms |
コード長 | 1,367 bytes |
コンパイル時間 | 237 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 191,232 KB |
最終ジャッジ日時 | 2024-07-20 14:36:57 |
合計ジャッジ時間 | 27,096 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 123 |
ソースコード
import syssys.setrecursionlimit(10 ** 9)input = sys.stdin.buffer.readlineint1 = lambda x: int(x) - 1def bridge(G, N):"""橋検出https://tjkendev.github.io/procon-library/python/graph/bridge.html より拝借しています。networkxが使えないサイト用"""result = set()label = [None] * Ngen = 0cost = [0] * Ndef dfs(u, p):nonlocal genres = 0for v in G[u]:if v == p:continueif label[v] is not None:if label[v] < label[u]:cost[v] += 1res += 1else:label[v] = gengen += 1r = dfs(v, u)if r == 0:result.add((u, v) if u < v else (v, u))res += rres -= cost[u]return resfor v in range(N):if not label[v]:label[v] = gengen += 1r = dfs(v, -1)# assert r == 0, rreturn resultN = int(input())G = [[] for _ in range(N)]AB = [tuple(sorted(list(map(int1, input().split())))) for _ in range(N)]for a, b in AB:G[a].append(b)G[b].append(a)res = bridge(G, N)ans = []for i in range(N):if AB[i] not in res:ans.append(i + 1)print(len(ans))print(*ans)