結果

問題 No.763 Noelちゃんと木遊び
コンテスト
ユーザー むらため
提出日時 2019-01-30 00:59:11
言語 Nim
(2.2.6)
コンパイル:
nim --nimcache=~ --hints:off -o:a.out -d:release cpp _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,000 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,972 ms
コンパイル使用メモリ 70,492 KB
実行使用メモリ 17,920 KB
最終ジャッジ日時 2026-03-22 10:44:45
合計ジャッジ時間 3,735 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 1 WA * 21
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sequtils
template times*(n:int,body) = (for _ in 0..<n: body)
proc getchar_unlocked():char {. importc:"getchar_unlocked",header: "<stdio.h>" .}
proc scan(): int =
  while true:
    let k = getchar_unlocked()
    if k < '0': return
    result = 10 * result + k.ord - '0'.ord

let n = scan()
var E = newSeqWith(n,newSeq[int]())
(n-1).times: E[scan()-1] &= scan()-1
var preHasCutDP = newSeqWith(n,-1)
var preHasNotCutDP = newSeqWith(n,-1)
# var time = 0
proc solve(preHasCut:bool,x:int):int =
  if E[x].len == 0 : return if preHasCut: 1 else: 0
  if preHasCut and preHasCutDP[x] != -1 : return preHasCutDP[x]
  if not preHasCut and preHasNotCutDP[x] != -1 : return preHasNotCutDP[x]
  # time += 1
  var whenCut = 0
  for e in E[x]: whenCut += solve(true,e)
  var whenNotCut = 0
  for e in E[x]: whenNotCut += solve(false,e)
  if preHasCut : whenNotCut += 1
  result = max(whenCut,whenNotCut)
  if preHasCut:preHasCutDP[x] = result
  else: preHasNotCutDP[x] = result
echo solve(true,0)
# echo time
0