trang chủ / đề bài / hanam_tst_24_c

Khảo cổ

Đề bài

Mô tả

Bạn là một nhà khảo cổ học đang thực hiện một cuộc khảo sát trên một hòn đảo cổ xưa, nơi có nhiều khu vực khảo cổ khác nhau được kết nối bằng những con đường cổ đại.

Bản đồ hòn đảo gồm n điểm khảo cổ, đánh số từ 1 đến n và m con đường cổ đại hai chiều, đường cổ đại thứ i nối trực tiếp từ điểm khảo cổ ui đến điểm khảo cổ vi.

Bạn cần di chuyển từ một điểm khảo cổ chính (đỉnh 1) đến điểm khảo cổ quan trọng nhất (đỉnh n). Để thuận tiện, bạn có hai phương án di chuyển:

  1. Di chuyển qua các con đường cổ đại: Mỗi con đường cổ đại có một chi phí di chuyển nhất định được cho bởi trọng số của cạnh nối hai điểm khảo cổ.
  2. Sử dụng cổng di chuyển: Bạn có thể sử dụng một loại cổng di chuyển ma thuật để di chuyển trực tiếp từ một điểm khảo cổ này đến một điểm khảo cổ khác. Cổng di chuyển ma thuật có một số hạn chế:
    • Bạn chỉ có thể sử dụng cổng di chuyển ma thuật nếu khu vực khảo cổ bạn muốn đến có thể được tiếp cận từ khu vực khảo cổ hiện tại thông qua không quá l con đường cổ đại (tức là tồn tại một đường đi từ điểm hiện tại đến điểm muốn đến gồm không quá l con đường, không tính trọng số).
    • Mỗi lần sử dụng cổng di chuyển ma thuật tốn một chi phí cố định p.
    • Bạn chỉ được phép sử dụng cổng di chuyển ma thuật không quá k lần.

Yêu cầu: Tìm cách di chuyển từ điểm khảo cổ chính (đỉnh 1) đến điểm khảo cổ quan trọng nhất (đỉnh n) sao cho tổng chi phí di chuyển là nhỏ nhất.

Dữ liệu vào

  • Dòng 1: Năm số nguyên n,m,p,l,k (2≤n≤104; 1≤m≤104; 0≤l,k≤10; 1≤p≤105).
  • Dòng 2…m+1: Mỗi dòng ba số nguyên u,v,w (1≤u,v≤n; u≠v; 1≤w≤105) biểu thị một con đường cổ đại nối hai điểm khảo cổ u và v với trọng số w. Mỗi cặp điểm khảo cổ u và v chỉ có một con đường cổ đại duy nhất nối trực tiếp.

Dữ liệu đảm bảo có thể đi từ đỉnh 1 đến đỉnh n qua các con đường cổ đại.

Dữ liệu ra

In ra một số nguyên là tổng chi phí di chuyển nhỏ nhất từ điểm khảo cổ chính (đỉnh 1) đến điểm khảo cổ quan trọng (đỉnh n).

Ràng buộc

  • 2≤n≤104, 1≤m≤104.
  • 0≤l,k≤10, 1≤p≤105.
  • 1≤w≤105; không có hai con đường nối cùng một cặp điểm, không có đường nối một điểm với chính nó.
  • Có thể đi từ đỉnh 1 đến đỉnh n.

Subtasks

  • Subtask 1 (30% số điểm): k=0; w=1 với mọi con đường.
  • Subtask 2 (20% số điểm): k=0.
  • Subtask 3 (20% số điểm): n≤300.
  • Subtask 4 (30% số điểm): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
6 7 3 2 1
1 2 2
1 3 5
2 3 4
2 4 23
3 4 6
5 4 7
5 6 9
14 Đường đi có tổng chi phí nhỏ nhất là 1−3−4−6, có tổng chi phí 5+6+3=14, trong đó có sử dụng một cổng di chuyển ma thuật từ địa điểm 4 đến địa điểm 6 (từ 4 đến 6 đi được qua 2 con đường 4−5−6, và 2≤l).
6 7 3 2 0
1 2 2
1 3 5
2 3 4
2 4 23
3 4 6
5 4 7
5 6 9
27 Không được dùng cổng (k=0). Đường đi có tổng chi phí nhỏ nhất là 1−3−4−5−6, có tổng trọng số 5+6+7+9=27.

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