結果
| 問題 |
No.1254 補強への架け橋
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-01-29 12:53:58 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,382 bytes |
| コンパイル時間 | 266 ms |
| コンパイル使用メモリ | 12,288 KB |
| 実行使用メモリ | 65,064 KB |
| 最終ジャッジ日時 | 2025-01-01 22:08:47 |
| 合計ジャッジ時間 | 32,106 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 121 RE * 2 |
ソースコード
def construct(G, N):
P = [0]*N
G0 = [[] for i in range(N)]
V = []
lb = [0]*N
def dfs(v, p):
P[v] = p
V.append(v)
lb[v] = len(V)
for w in G[v]:
if w == p:
continue
if lb[w]:
if lb[v] < lb[w]:
G0[v].append(w)
continue
dfs(w, v)
dfs(0, -1)
B = []
ap = [0]*N
used = [0]*N
first = 1
used[0] = 1
for u in V:
if not used[u]:
p = P[u]
B.append((u, p) if u < p else (p, u))
if len(G[u]) > 1:
ap[u] = 1
if len(G[p]) > 1:
ap[p] = 1
cycle = 0
for v in G0[u]:
w = v
while w != u and not used[w]:
used[w] = 1
w = P[w]
if w == u:
cycle = 1
if cycle:
if not first:
ap[u] = 1
first = 0
A = [v for v in range(N) if ap[v]]
return B
n=int(input())
g=[[] for _ in range(n)]
bridge=[]
for _ in range(n):
a,b=map(int,input().split())
g[a-1].append(b-1)
g[b-1].append(a-1)
if a>b:
a,b=b,a
bridge.append((a-1,b-1))
l=construct(g,n)
l=set(l)
ans=[]
for i in range(n):
if bridge[i] not in l:
ans.append(i+1)
print(len(ans))
print(*ans)