trang chủ / đề bài / werewolf

Hành Trình Người Sói

Đề bài

Mô tả

Remus Lupin Remus Lupin trong hình dạng người sói, cần di chuyển từ khu vực 1 đến khu vực N trong Rừng Cấm. Rừng Cấm có N khu vực được nối bởi M con đường hai chiều.

Chu kỳ trăng có T pha, đánh số từ 0 đến T−1. Tại thời điểm t, pha trăng hiện tại là tmodT. Người sói bắt đầu tại khu vực 1 ở thời điểm 0 (pha 0).

Mỗi con đường i nối khu vực ui và vi, có thời gian di chuyển wi đơn vị. Tuy nhiên, con đường chỉ an toàn khi pha trăng hiện tại nằm trong khoảng [li,ri]. Nếu li≤ri, đường an toàn tại các pha li,li+1,…,ri. Nếu li>ri, khoảng quay vòng: đường an toàn tại các pha li,li+1,…,T−1,0,1,…,ri.

Người sói chỉ có thể bắt đầu đi trên một con đường khi pha trăng hiện tại nằm trong khoảng an toàn. Khi đi trên đường i, thời gian tăng thêm wi và pha trăng khi đến nơi là (t+wi)modT.

Tại bất kỳ khu vực nào, người sói có thể chờ đợi 1 đơn vị thời gian (pha trăng tăng lên 1).

Tìm thời gian ngắn nhất để di chuyển từ khu vực 1 đến khu vực N. In −1 nếu không thể đến được.

Dữ liệu vào

  • Dòng đầu tiên chứa ba số nguyên N, M, T.
  • M dòng tiếp theo, mỗi dòng chứa năm số nguyên ui, vi, wi, li, ri mô tả một con đường.

Dữ liệu ra

In một số nguyên duy nhất - thời gian ngắn nhất để đi từ khu vực 1 đến khu vực N, hoặc −1 nếu không thể.

Ràng buộc

  • 2≤N≤5×104
  • 1≤M≤105
  • 1≤T≤100
  • 1≤wi≤106
  • 0≤li,ri<T
  • 1≤ui,vi≤N, ui≠vi

Ví dụ

Input Output Giải thích
4 4 3
1 2 2 0 1
2 4 3 2 2
1 3 1 0 0
3 4 1 1 1
2 Đi đường 1→3 (w=1, pha 0 hợp lệ, đến pha 1) rồi 3→4 (w=1, pha 1 hợp lệ). Tổng thời gian = 2. Đường 1→2→4 tốn 5 nên không tối ưu.
3 2 4
1 2 1 2 2
2 3 1 3 3
4 Pha 0: đường 1-2 chỉ mở pha 2. Chờ 2 đơn vị (pha 0→1→2), đi 1→2 (w=1, pha 2, đến pha 3). Đường 2-3 mở pha 3, đi ngay 2→3 (w=1). Tổng = 2 + 1 + 1 = 4.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0