Submission #1777683
Source Code Expand
import Data.List import Data.Array import Data.Array.IO import Control.Monad data Node = Node { edgesTO :: [Int], edgesCost :: [Int], nodeDone :: Bool, nodeCost :: Int } deriving (Show, Eq) type FNodes = (Array Int Node) type Nodes = (IOArray Int Node) getDoneNodeIndex :: [Node] -> Int getDoneNodeIndex nodes = iter (-1) 0 where iter i n | n == length nodes = i + 1 | nodeDone node || nodeCost node < 0 = iter i (n + 1) | i == -1 || nodeCost node < nodeCost done = iter n (n + 1) | otherwise = iter i (n + 1) where node = nodes !! n done = nodes !! i calc :: Nodes -> IO () calc nodes = do list <- getElems nodes let i = getDoneNodeIndex list when (i > 0) $ do done <- readArray nodes i writeArray nodes i (done { nodeDone = True }) forM_ [0 .. length (edgesTO done) - 1] $ \x -> do let to = edgesTO done !! x let cost = nodeCost done + edgesCost done !! x node <- readArray nodes to when (nodeCost node < 0 || cost < nodeCost node) $ writeArray nodes to (node { nodeCost = cost } ) calc nodes calcCost :: Int -> Nodes -> IO Int calcCost start nodes = do s <- readArray nodes start writeArray nodes start (s { nodeCost = 0 }) calc nodes list <- getElems nodes return $ nodeCost $ maximumBy (\a b -> compare (nodeCost a) (nodeCost b)) list setNode :: Int -> Int -> Int -> Nodes -> IO () setNode n to cost nodes = do n1 <- readArray nodes n writeArray nodes n (n1 { edgesTO = edgesTO n1 ++ [to], edgesCost = edgesCost n1 ++ [cost] }) n2 <- readArray nodes to writeArray nodes to (n2 { edgesTO = edgesTO n2 ++ [n], edgesCost = edgesCost n2 ++ [cost] }) return () main :: IO () main = do [n,m] <- map read . words <$> getLine :: IO [Int] input <- newArray (1,n) (Node [] [] False (-1)) :: IO Nodes replicateM_ m $ do [a,b,t] <- map read . words <$> getLine setNode a b t input baseNodes <- freeze input :: IO FNodes list <- forM [1..n] $ \i -> do nodes <- thaw baseNodes calcCost i nodes print $ minimum list
Submission Info
Submission Time | |
---|---|
Task | D - バスと避けられない運命 |
User | atctk |
Language | Haskell (GHC 7.10.3) |
Score | 0 |
Code Size | 2378 Byte |
Status | TLE |
Exec Time | 5257 ms |
Memory | 35196 KB |
Judge Result
Set Name | All | ||||
---|---|---|---|---|---|
Score / Max Score | 0 / 100 | ||||
Status |
|
Set Name | Test Cases |
---|---|
All | sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 1 ms | 508 KB |
sample_02.txt | AC | 2 ms | 508 KB |
sample_03.txt | AC | 1 ms | 508 KB |
test_01.txt | AC | 1 ms | 508 KB |
test_02.txt | TLE | 5255 ms | 7676 KB |
test_03.txt | TLE | 5257 ms | 35196 KB |
test_04.txt | AC | 3019 ms | 7548 KB |
test_05.txt | TLE | 5256 ms | 15740 KB |
test_06.txt | AC | 340 ms | 6524 KB |
test_07.txt | TLE | 5257 ms | 28028 KB |
test_08.txt | AC | 13 ms | 1660 KB |
test_09.txt | AC | 4572 ms | 12668 KB |
test_10.txt | AC | 264 ms | 3452 KB |
test_11.txt | AC | 326 ms | 4476 KB |
test_12.txt | TLE | 5256 ms | 10620 KB |
test_13.txt | AC | 357 ms | 4476 KB |
test_14.txt | AC | 618 ms | 5500 KB |
test_15.txt | TLE | 5257 ms | 27004 KB |
test_16.txt | AC | 745 ms | 5500 KB |
test_17.txt | TLE | 5256 ms | 13692 KB |
test_18.txt | AC | 4753 ms | 12156 KB |
test_19.txt | AC | 838 ms | 6524 KB |
test_20.txt | AC | 621 ms | 5500 KB |
test_21.txt | AC | 2 ms | 1020 KB |
test_22.txt | AC | 1401 ms | 5884 KB |
test_23.txt | AC | 6 ms | 1276 KB |
test_24.txt | TLE | 5256 ms | 6908 KB |
test_25.txt | TLE | 5256 ms | 7548 KB |
test_26.txt | AC | 1380 ms | 4476 KB |
test_27.txt | AC | 2039 ms | 6908 KB |
test_28.txt | TLE | 5256 ms | 7548 KB |
test_29.txt | TLE | 5256 ms | 6908 KB |
test_30.txt | AC | 165 ms | 1916 KB |
test_31.txt | AC | 8 ms | 1020 KB |
test_32.txt | TLE | 5256 ms | 6908 KB |
test_33.txt | TLE | 5256 ms | 7548 KB |
test_34.txt | AC | 42 ms | 1404 KB |
test_35.txt | AC | 993 ms | 4476 KB |
test_36.txt | TLE | 5256 ms | 6908 KB |