Submission #12077234
Source Code Expand
import Control.Exception (assert) import Control.Monad 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 Data.Maybe import qualified Data.Sequence as Seq import qualified Data.Set as Set import qualified Data.Vector.Unboxed as V 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 type Edge = (Int, Int, Int) eFrm (frm, _, _) = frm eTo (_, to, _) = to eCost (_, _, cost) = cost longestPath :: Int -> V.Vector (Int, Int, Int) -> Int -> IO (V.Vector Int) longestPath s edges numV = do let numE = V.length edges inf = 10^18 :: Int d <- VM.new numV VM.set d (-inf) VM.write d s 0 let loop :: Int -> IO () loop i | i > 2*numV = return () | otherwise = do update <- loop2 (i >= numV) 0 False if update then loop (i+1) else return () loop2 :: Bool -> Int -> Bool -> IO Bool loop2 cyc j upd | j == V.length edges = return upd | otherwise = do let e = edges V.! j d_frm <- VM.read d (eFrm e) d_to <- VM.read d (eTo e) let ucond = d_frm /= (-inf) && d_to < d_frm + eCost e upd' = upd || ucond when (ucond && not cyc) $ VM.write d (eTo e) (min inf (d_frm + eCost e)) when (ucond && cyc) $ VM.write d (eTo e) inf loop2 cyc (j+1) upd' loop 0 res <- V.freeze d return res main = do [n, m] <- getIntList edges <- V.replicateM m $ do [a, b, c] <- getIntList return (a-1, b-1, c) costs <- longestPath 0 edges n let inf = 10^18 :: Int ans = costs V.! (n-1) if ans == inf then putStrLn "inf" else print ans
Submission Info
Submission Time | |
---|---|
Task | D - Score Attack |
User | unnohideyuki |
Language | Haskell (GHC 7.10.3) |
Score | 400 |
Code Size | 2621 Byte |
Status | AC |
Exec Time | 59 ms |
Memory | 1148 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_2.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 2 ms | 508 KB |
sample_02.txt | AC | 2 ms | 380 KB |
sample_03.txt | AC | 2 ms | 508 KB |
subtask_1_1.txt | AC | 2 ms | 1020 KB |
subtask_1_10.txt | AC | 2 ms | 636 KB |
subtask_1_11.txt | AC | 6 ms | 1020 KB |
subtask_1_12.txt | AC | 31 ms | 1020 KB |
subtask_1_13.txt | AC | 2 ms | 508 KB |
subtask_1_14.txt | AC | 30 ms | 1020 KB |
subtask_1_15.txt | AC | 59 ms | 1148 KB |
subtask_1_16.txt | AC | 2 ms | 508 KB |
subtask_1_17.txt | AC | 2 ms | 636 KB |
subtask_1_18.txt | AC | 2 ms | 1020 KB |
subtask_1_19.txt | AC | 3 ms | 1020 KB |
subtask_1_2.txt | AC | 2 ms | 1020 KB |
subtask_1_20.txt | AC | 2 ms | 508 KB |
subtask_1_21.txt | AC | 2 ms | 1020 KB |
subtask_1_22.txt | AC | 3 ms | 1020 KB |
subtask_1_23.txt | AC | 2 ms | 508 KB |
subtask_1_24.txt | AC | 3 ms | 1020 KB |
subtask_1_25.txt | AC | 8 ms | 1020 KB |
subtask_1_26.txt | AC | 2 ms | 1020 KB |
subtask_1_27.txt | AC | 33 ms | 1020 KB |
subtask_1_3.txt | AC | 2 ms | 1020 KB |
subtask_1_4.txt | AC | 2 ms | 1020 KB |
subtask_1_5.txt | AC | 14 ms | 1020 KB |
subtask_1_6.txt | AC | 37 ms | 1020 KB |
subtask_1_7.txt | AC | 2 ms | 1020 KB |
subtask_1_8.txt | AC | 2 ms | 1020 KB |
subtask_1_9.txt | AC | 2 ms | 380 KB |