結果
| 問題 |
No.1254 補強への架け橋
|
| コンテスト | |
| ユーザー |
TANIGUCHI Kousuke
|
| 提出日時 | 2021-02-16 22:00:38 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 642 ms / 2,000 ms |
| コード長 | 708 bytes |
| コンパイル時間 | 398 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 31,744 KB |
| 最終ジャッジ日時 | 2024-09-13 10:59:38 |
| 合計ジャッジ時間 | 32,612 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 123 |
コンパイルメッセージ
Syntax OK
ソースコード
Edge = Struct.new(:to, :id)
N = gets.to_i
G = Array.new(N + 1){ [] }
(1 .. N).each do |i|
a,b = gets.split.map(&:to_i)
G[a] << Edge.new(b, i)
G[b] << Edge.new(a, i)
end
active = Array.new(N + 1)
parent = Array.new(N + 1)
depth = Array.new(N + 1)
active[N] = G[N].size
parent[N] = N
depth[N] = 0
u = N
loop do
j = (active[u] -= 1)
e = G[u][j]
v = e.to
if j < 0
u = parent[u]
elsif !active[v]
active[v] = G[v].size
depth[v] = depth[u] + 1
parent[v] = u
u = v
elsif v != parent[u]
cycle = [e.id]
w = v
until w == u
cycle << G[w][active[w]].id
w = G[w][active[w]].to
end
puts cycle.size
puts cycle.join(" ")
break
end
end
TANIGUCHI Kousuke