結果
問題 |
No.1637 Easy Tree Query
|
ユーザー |
![]() |
提出日時 | 2021-11-26 15:50:21 |
言語 | Ruby (3.4.1) |
結果 |
RE
|
実行時間 | - |
コード長 | 791 bytes |
コンパイル時間 | 41 ms |
コンパイル使用メモリ | 7,552 KB |
実行使用メモリ | 60,544 KB |
最終ジャッジ日時 | 2024-06-29 12:27:48 |
合計ジャッジ時間 | 22,746 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 32 RE * 1 |
コンパイルメッセージ
Syntax OK
ソースコード
require 'tsort' class Hash include TSort alias tsort_each_node each_key def tsort_each_child(node, &block) fetch(node).each(&block) end end N, Q = gets.split.map(&:to_i) OE = Array.new(N + 1) { [] } E = Hash.new RE = Hash.new { |h, k| h[k] = [] } 1.upto(N) do |v| E[v] = [] end (N - 1).times do a, b = gets.split.map(&:to_i) OE[a] << b OE[b] << a end visited = Array.new(N + 1, false) queue = [1] until queue.empty? v = queue.shift next if visited[v] visited[v] = true OE[v].each do |u| next if visited[u] E[v] << u RE[u] << v queue << u end end C = Array.new(N + 1, 0) E.tsort.each do |v| C[v] += 1 RE[v].each do |u| C[u] += C[v] end end ans = 0 Q.times do p, x = gets.split.map(&:to_i) ans += C[p] * x puts ans end