trang chủ / đề bài / pt_tst_26_f

Trò chơi

Đề bài

Mô tả

Bạn đang chơi trò chơi "Chiến dịch tập kích" với bản đồ gồm N thành phố (đánh số từ 1 đến N) được nối bởi M con đường một chiều. Để đi hết con đường thứ i cần tốn wi đơn vị thời gian. Bạn xuất phát vào thời điểm 0 tại thành phố 1 và cần phá hủy mục tiêu được đặt ở thành phố N.

Có một số thành phố được bảo vệ bởi lá chắn phòng thủ. Lá chắn phòng thủ của một thành phố được duy trì bởi một số trạm phát đặt tại những thành phố khác. Muốn tiến vào một thành phố có lá chắn phòng thủ, trước hết phải phá hủy toàn bộ các trạm phát duy trì lá chắn đó; mà muốn phá một trạm phát thì phải tiến được vào thành phố chứa trạm phát ấy.

Bạn có vô số robot cảm tử. Mỗi khi tiến vào một thành phố, một robot lập tức phá hủy một mục tiêu tại đó (phá hủy một trạm phát hoặc mục tiêu ở thành phố N). Việc phá hủy không tốn thời gian; chỉ việc di chuyển trên các con đường mới tốn thời gian.

Hãy tính thời gian ít nhất để phá hủy được mục tiêu ở thành phố N.

Dữ liệu vào

  • Dòng đầu gồm hai số nguyên N và M (1≤N≤105,1≤M≤3·105);
  • M dòng tiếp theo, mỗi dòng gồm ba số nguyên ui,vi,wi (1≤wi≤108) mô tả một con đường một chiều đi từ thành phố ui tới thành phố vi tốn wi đơn vị thời gian;
  • N dòng tiếp theo, dòng thứ v mô tả thành phố v: bắt đầu bằng số nguyên lv là số trạm phát duy trì lá chắn của thành phố v, tiếp theo là lv số hiệu thành phố cho biết vị trí đặt mỗi trạm phát. Nếu lv=0 thì thành phố v không có lá chắn (thành phố 1 bảo đảm không có lá chắn, tức l1=0).

Dữ liệu bảo đảm luôn có phương án phá hủy mục tiêu và không có trạm phát duy trì lá chắn của một thành phố nào lại nằm trong chính thành phố đó. Có thể có nhiều con đường nối cùng một cặp thành phố và có thể có đường đi từ một thành phố tới chính nó.

Dữ liệu ra

Một số nguyên duy nhất là thời gian ít nhất để phá hủy được mục tiêu ở thành phố N.

Ràng buộc

  • 1≤N≤105, 1≤M≤3·105.
  • 1≤ui,vi≤N, 1≤wi≤108.
  • l1=0; các trạm phát của thành phố v nằm ở các thành phố khác v.

Subtasks

  • Subtask 1 (20% số điểm): N≤80.
  • Subtask 2 (35% số điểm): N≤5000.
  • Subtask 3 (45% số điểm): Không có giới hạn gì thêm.

Ví dụ

Input Output Giải thích
6 6
1 2 1
1 4 3
2 3 1
2 5 2
4 6 2
5 3 2
0
0
0
1 5
0
2 3 5
5 Thành phố 4 có lá chắn do trạm phát ở thành phố 5 duy trì. Thành phố 6 có lá chắn do hai trạm phát ở thành phố 3 và 5 duy trì. Phương án tối ưu tiến vào các thành phố theo thứ tự lần lượt là: 2→3→5→4→6. Đáp án là 5.
3 2
1 3 1
1 2 5
0
0
1 2
5 Ví dụ thêm (không có trong đề gốc). Robot đến thành phố 3 ở thời điểm 1 nhưng phải chờ trạm phát ở thành phố 2 bị phá ở thời điểm 5 mới tiến vào được.

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