Submission #19440021


Source Code Expand

{-# LANGUAGE DatatypeContexts #-}
import           Control.Exception           (assert)
import           Control.Monad
import           Control.Monad.Primitive
import qualified Control.Monad.ST            as ST
import qualified Data.Array.IO               as IO
import qualified Data.Array.ST               as ST
import qualified Data.Array.Unboxed          as A
import           Data.Bits
import qualified Data.ByteString.Char8       as BS
import           Data.Char
import           Data.Foldable
import           Data.List
import qualified Data.Map.Strict             as Map
import           Data.Maybe
import qualified Data.Sequence               as Seq
import qualified Data.Set                    as Set
import qualified Data.Vector                 as VB
import qualified Data.Vector.Mutable         as VBM
import qualified Data.Vector.Unboxed         as V
import           Data.Vector.Unboxed.Base
import qualified Data.Vector.Unboxed.Mutable as VM
import           Debug.Trace

readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine
getIntVec n = V.unfoldrN n (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine

readInteger = fst . fromJust . BS.readInteger
readIntegerList = map readInteger . BS.words
getInteger = readInteger <$> BS.getLine
getIntegerList = readIntegerList <$> BS.getLine

inf :: Int
inf = 10^18

main = do
  [n, u', v'] <- getIntList
  let (u, v) = (u'-1, v'-1)

  ess <- VBM.new n
  VBM.set ess ([]::[Int])

  replicateM_ (n-1) $ do
    [a, b] <- getIntList
    let ia = a - 1
        ib = b - 1
    ta <- VBM.read ess ia
    VBM.write ess ia (ib:ta)
    tb <- VBM.read ess ib
    VBM.write ess ib (ia:tb)

  da <- VM.new n
  VM.set da inf
  dt <- VM.new n
  VM.set dt inf

  let dfs d d' par i dist = do
        t <- VM.read d i
        if (t > dist)
          then do
          VM.write d i dist
          es <- VBM.read ess i
          let es' = filter (/=par) es
          if null es' -- if Leaf
            then do t' <- VM.read d' i
                    let r | t' == 0 = dist - 1
                          | dist >= t' = 0
                          | otherwise = t' - 1
                    return r
            else do bs <- forM es' $ \j -> dfs d d' i j (dist+1)
                    return $ maximum bs
          else return 0

  dfs da dt (-1) v 0
  ans <- dfs dt da (-1) u 0
  print ans


Submission Info

Submission Time
Task F - Playing Tag on Tree
User unnohideyuki
Language Haskell (GHC 8.8.3)
Score 600
Code Size 2500 Byte
Status AC
Exec Time 283 ms
Memory 58120 KiB

Compile Error

Loaded package environment from /home/contestant/.ghc/x86_64-linux-8.8.3/environments/default

Main.hs:1:14: warning:
    -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
  |
1 | {-# LANGUAGE DatatypeContexts #-}
  |              ^^^^^^^^^^^^^^^^

Judge Result

Set Name Sample All After_contest
Score / Max Score 0 / 0 600 / 600 0 / 0
Status
AC × 4
AC × 26
AC × 1
Set Name Test Cases
Sample sample_01, sample_02, sample_03, sample_04
All path1_01, path1_02, path1_03, path2_01, path2_02, path2_03, random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, random_09, random_10, random_11, random_12, random_13, sample_01, sample_02, sample_03, sample_04, star_01, star_02, star_03
After_contest after_contest_01
Case Name Status Exec Time Memory
after_contest_01 AC 8 ms 4024 KiB
path1_01 AC 207 ms 45776 KiB
path1_02 AC 120 ms 26448 KiB
path1_03 AC 182 ms 37976 KiB
path2_01 AC 278 ms 48984 KiB
path2_02 AC 283 ms 58120 KiB
path2_03 AC 279 ms 56144 KiB
random_01 AC 8 ms 5616 KiB
random_02 AC 9 ms 5732 KiB
random_03 AC 17 ms 7396 KiB
random_04 AC 15 ms 5848 KiB
random_05 AC 17 ms 7028 KiB
random_06 AC 101 ms 17256 KiB
random_07 AC 174 ms 23996 KiB
random_08 AC 98 ms 16192 KiB
random_09 AC 124 ms 18816 KiB
random_10 AC 200 ms 31052 KiB
random_11 AC 222 ms 32768 KiB
random_12 AC 222 ms 32652 KiB
random_13 AC 225 ms 32652 KiB
sample_01 AC 2 ms 3944 KiB
sample_02 AC 3 ms 4016 KiB
sample_03 AC 2 ms 3936 KiB
sample_04 AC 3 ms 3956 KiB
star_01 AC 103 ms 24128 KiB
star_02 AC 101 ms 23952 KiB
star_03 AC 120 ms 25428 KiB