結果
| 問題 |
No.1817 Reversed Edges
|
| コンテスト | |
| ユーザー |
siman
|
| 提出日時 | 2023-02-14 10:35:09 |
| 言語 | Ruby (3.4.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 800 bytes |
| コンパイル時間 | 345 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 30,080 KB |
| 最終ジャッジ日時 | 2024-07-16 19:35:48 |
| 合計ジャッジ時間 | 12,136 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 22 RE * 1 |
コンパイルメッセージ
Syntax OK
ソースコード
N = gets.to_i
E = Array.new(N + 1) { [] }
(N - 1).times do
a, b = gets.split.map(&:to_i)
E[a] << b
E[b] << a
end
DP1 = Array.new(N + 1) { [] }
def dfs(v, parent, ans)
r_cnt = 0
E[v].each do |u|
next if u == parent
r = dfs(u, v, ans)
DP1[v] << r
r_cnt += r
end
ans[v] += r_cnt
if v < parent
r_cnt += 1
end
r_cnt
end
def r_dfs(v, cnt, parent, ans)
if parent != -1
ans[v] += cnt
end
idx = 0
E[v].each_with_index do |u|
next if u == parent
if v < u
cnt += 1
end
nv = ans[v] - DP1[v][idx]
nv += 1 if v < u
r_dfs(u, nv, v, ans)
idx += 1
if v < u
cnt -= 1
end
end
end
ans = Array.new(N + 1, 0)
root = 1
dfs(root, -1, ans)
r_dfs(root, ans[root], -1, ans)
1.upto(N) do |v|
puts ans[v]
end
siman