Submission #51785046


Source Code Expand

import Control.Monad
import qualified Data.ByteString.Char8 as BS
import Data.Char
import Data.List

import Data.Array
import qualified Data.Set as S

main :: IO ()
main = do
  nm <- bsGetLnInts
  uvs <- replicateM (nm !! 1) bsGetLnInts
  st <- bsGetLnInts
  let ans = abc132e (nm ++ st) uvs
  print ans

bsGetLnInts :: IO [Int]
bsGetLnInts = unfoldr (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine


abc132e :: [Int] -> [[Int]] -> Int
abc132e [n,m,s,t] uvs = bfs 0 (S.singleton start) [start] []
  where
    g = accumArray (flip (:)) [] (1,n) [(u, v) | u:v:_ <- uvs]
    start = (s,0)
    goal  = (t,0)
    bfs :: Int -> S.Set (Int,Int) -> [(Int,Int)] -> [(Int,Int)] -> Int
    bfs _nt _ [] [] = -1                                       -- 経路なし
    bfs cnt visited [] nexts = bfs (succ cnt) visited nexts [] -- BFSを一段進める
    bfs cnt visited (uk@(u,k):uks) nexts
      | uk == goal = div cnt 3                                 -- ゴールしたら距離/3が答え
      | otherwise = bfs cnt visited1 uks nexts1
      where
        j = mod (succ k) 3
        vjs = [vj | v <- g ! u, let vj = (v,j), notElem vj visited]
        visited1 = S.union visited $ S.fromList vjs
        nexts1 = vjs ++ nexts

{-
格調高くやる。
-}

Submission Info

Submission Time
Task E - Hopscotch Addict
User joetheshootingst
Language Haskell (GHC 9.4.5)
Score 0
Code Size 1295 Byte
Status TLE
Exec Time 2212 ms
Memory 42756 KiB

Compile Error

app/Main.hs:22:1: warning: [-Wincomplete-patterns]
    Pattern match(es) are non-exhaustive
    In an equation for ‘abc132e’:
        Patterns of type ‘[Int]’, ‘[[Int]]’ not matched:
            [] _
            [_] _
            [_, _] _
            [_, _, _] _
            ...
   |
22 | abc132e [n,m,s,t] uvs = bfs 0 (S.singleton start) [start] []
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...

app/Main.hs:22:12: warning: [-Wunused-matches]
    Defined but not used: ‘m’
   |
22 | abc132e [n,m,s,t] uvs = bfs 0 (S.singleton start) [start] []
   |            ^

Judge Result

Set Name All Sample
Score / Max Score 0 / 500 0 / 0
Status
AC × 12
TLE × 11
AC × 4
Set Name Test Cases
All cycle_01, cycle_02, cycle_03, killer_01, killer_02, killer_03, killer_04, long_01, long_02, random_dense_01, random_dense_02, random_max_01, random_max_02, random_max_03, random_max_04, random_max_05, random_max_06, sample_01, sample_02, sample_03, sample_04, tournament_01, tournament_02
Sample sample_01, sample_02, sample_03, sample_04
Case Name Status Exec Time Memory
cycle_01 TLE 2209 ms 36328 KiB
cycle_02 TLE 2209 ms 36408 KiB
cycle_03 TLE 2209 ms 36380 KiB
killer_01 AC 752 ms 35528 KiB
killer_02 AC 612 ms 35588 KiB
killer_03 TLE 2210 ms 39396 KiB
killer_04 AC 92 ms 42756 KiB
long_01 TLE 2212 ms 36324 KiB
long_02 TLE 2209 ms 36324 KiB
random_dense_01 AC 381 ms 18312 KiB
random_dense_02 AC 462 ms 32372 KiB
random_max_01 TLE 2209 ms 36188 KiB
random_max_02 TLE 2209 ms 36152 KiB
random_max_03 TLE 2209 ms 36276 KiB
random_max_04 TLE 2209 ms 36184 KiB
random_max_05 AC 62 ms 36488 KiB
random_max_06 TLE 2212 ms 36200 KiB
sample_01 AC 2 ms 6940 KiB
sample_02 AC 2 ms 6968 KiB
sample_03 AC 2 ms 6700 KiB
sample_04 AC 1 ms 7004 KiB
tournament_01 AC 612 ms 35536 KiB
tournament_02 AC 932 ms 35572 KiB