$N$é ‚ç‚¹$M$辺ã®ç„¡å‘グラフãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚å„é ‚ç‚¹ã«ã¯ç›¸ç•°ãªã‚‹$1$ã‹ã‚‰$N$ã¾ã§ã®ç•ªå·ãŒå®šã‚られã¦ã„る。ã‚ãªãŸã¯æ™‚刻$0$ã«é ‚点$S$を出発ã—ã€é ‚点$G$ã¾ã§ç§»å‹•ã—ãŸã„。å„辺ã«ã¯ãƒ‘ラメータ$a, b$ãŒè¨å®šã•ã‚Œã¦ã„ã¦ã€æ™‚刻$t$ã«ãã®è¾ºã®ç‰‡å´ã®é ‚点ã‹ã‚‰å‡ºç™ºã—ãŸå ´åˆã€ã‚‚ã†ç‰‡å´ã®é ‚点ã«ã¯æ™‚刻$t+ceil\left(\cfrac{b}{t+a}\right)$ã«åˆ°é”ã™ã‚‹ã“ã¨ãŒã‚ã‹ã£ã¦ã„る。ã“ã“ã§ã€$ceil(x)$ã¯$x$以上ã®æœ€å°ã®æ•´æ•°ã‚’表ã™ã€‚ã¾ãŸã€å„é ‚ç‚¹ã§ã¯ä»»æ„ã®éžè² 整数時間を余分ã«æ¶ˆè²»ã™ã‚‹ã“ã¨ãŒã§ãる。ã¤ã¾ã‚Šã€æ™‚刻$t$ã«ã‚ã‚‹é ‚ç‚¹ã«ã„ã‚‹ã¨ãã€ä»»æ„ã®éžè² æ•´æ•°$k$ã‚’é¸ã³ã€æ™‚刻$t+k$ã«ãªã‚‹ã¾ã§å¾…æ©Ÿã™ã‚‹ã“ã¨ãŒã§ãる。最速最強アルゴリズマーを目指ã™ã‚ãªãŸã¯ã€é ‚点$S$ã‹ã‚‰é ‚点$G$ã¾ã§ç§»å‹•ã™ã‚‹ãŸã‚ã«ã‹ã‹ã‚‹æ™‚é–“ã®æœ€å°å€¤ã‚’求ã‚ãŸããªã£ãŸã€‚
入力ã¯ä»¥ä¸‹ã®å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
$N$ $M$ $S$ $G$ $U_1$ $V_1$ $A_1$ $B_1$ $U_2$ $V_2$ $A_2$ $B_2$ : $U_M$ $V_M$ $A_M$ $B_M$
$1$行目ã«ã€ä¸Žãˆã‚‰ã‚Œã‚‹ã‚°ãƒ©ãƒ•ã®é ‚点数$N$ã€è¾ºæ•°$M$ã€ã‚¹ã‚¿ãƒ¼ãƒˆã®é ‚点番å·$S$ã€ã‚´ãƒ¼ãƒ«ã®é ‚点番å·$G$ãŒç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
続ã$M$è¡Œã«ã€å„辺ã®æƒ…å ±ãŒç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚$i$行目ã®æƒ…å ±ã¯ã€é ‚点$U_i$ã¨é ‚点$V_i$ã®é–“ã«$(a, b) = (A_i, B_i)$ã§ã‚るよã†ãªè¾ºãŒå˜åœ¨ã™ã‚‹ã“ã¨ã‚’表ã™ã€‚
入力ã¯ä»¥ä¸‹ã®æ¡ä»¶ã‚’満ãŸã™ã€‚
é ‚ç‚¹$S$ã‹ã‚‰é ‚点$G$ã¾ã§ç§»å‹•ã™ã‚‹ãŸã‚ã«ã‹ã‹ã‚‹æ™‚é–“ã®æœ€å°å€¤ã‚’出力ã›ã‚ˆã€‚é ‚ç‚¹$S$ã‹ã‚‰é ‚点$G$ã«ç§»å‹•ã§ããªã„å ´åˆã¯ã€ä»£ã‚ã‚Šã«$-1$を出力ã›ã‚ˆã€‚
2 1 1 2 1 2 1 100
19é ‚ç‚¹$1$ã§æ™‚é–“ã‚’$9$消費ã—ã€æ™‚刻$9$ã«è¾º$1$を使ã†ã¨ã€è¾ºã®æ‰€è¦æ™‚é–“ã¯$ceil\left(\cfrac{100}{10}\right) = 10$ã¨ãªã‚Šã€æ™‚刻$19$ã«é ‚点$2$ã«åˆ°é”ã§ãる。ã“ã‚ŒãŒæœ€çŸã§ã‚る。
2 1 1 2 1 2 50 100
2時刻$0$ã«è¾º$1$を使ã†ã®ãŒæœ€é©ã§ã‚る。
3 1 1 3 1 2 1 1
-1é ‚ç‚¹$S$ã‹ã‚‰é ‚点$G$ã«ç§»å‹•ã§ããªã„å ´åˆã‚‚ã‚る。
3 3 1 3 1 2 1 1 2 3 1 6 2 3 50 100
3
3 3 1 3 1 2 10 100 2 3 1 6 2 3 50 100
11