はじめに
@amaguri0408 さんの記事 競プロでのデバッグを標準エラー出力で行っているという話 が素敵でしたので、やってみました。
Ruby(WA)
N, X = gets.split.map(&:to_i)
A = gets.split.map(&:to_i)
known = [false] * N
x = X
while known[x].!
known[x] = true
x = A[x]
end
ans = 0
known.each do |i|
ans += 1 if i
end
puts ans
4 2
3 1 1 2
2
うむ、3 が正答なのでWA
ですね。
p
N, X = gets.split.map(&:to_i)
A = gets.split.map{ _1.to_i - 1 }
known = [false] * N
x = X - 1
while known[x].!
known[x] = true
x = A[x]
p [x, known]
end
ans = 0
known.each do |i|
ans += 1 if i
end
puts ans
4 2
3 1 1 2
[0, [false, true, false, false]]
[2, [true, true, false, false]]
[0, [true, true, true, false]]
3
Ruby
でデバッグするときはp
を使います。
warn
N, X = gets.split.map(&:to_i)
A = gets.split.map{ _1.to_i - 1 }
known = [false] * N
x = X - 1
while known[x].!
known[x] = true
x = A[x]
warn "#{x} #{known}"
end
ans = 0
known.each do |i|
ans += 1 if i
end
puts ans
まとめ
- @amaguri0408 さん、ありがとう
- AtCoderに詳しくなった