trang chủ / đề bài / gl_tst_25_b

Xây dựng tuyến đường giao thông

Đề bài

Mô tả

Quốc gia Z có N thành phố được nối với nhau bởi M con đường hai chiều và K sân bay. Khi đi qua một con đường nối hai thành phố U và V (1≤U,V≤N) bằng ô tô thì sẽ mất thời gian là C phút. Mỗi thành phố có tối đa một sân bay và bất cứ chuyến bay nào (giữa hai thành phố có sân bay) đều có thời gian di chuyển mất T phút.

Lãnh đạo quốc gia Z đưa ra Q yêu cầu để đẩy mạnh phát triển cơ sở hạ tầng. Yêu cầu sau chỉ được thực hiện khi yêu cầu trước đó đã hoàn thành. Mỗi yêu cầu của lãnh đạo có thể thực hiện một trong ba loại công việc sau:

  • Loại 1: Xây dựng một con đường hai chiều mới giữa hai thành phố U và V (1≤U,V≤N) sao cho mất C phút khi di chuyển bằng ô tô.
  • Loại 2: Xây dựng một sân bay mới ở một thành phố X (1≤X≤N).
  • Loại 3: Tính ∑i=1N∑j=1NF(i,j) với F(i,j) là tổng thời gian tối thiểu để đi từ thành phố i đến thành phố j qua các con đường và chuyến bay (nếu không có cách đi hoặc i=j thì F(i,j)=0).

Yêu cầu: Bạn hãy giúp lãnh đạo mô hình hóa các yêu cầu loại 1 và 2, cho biết kết quả của các yêu cầu loại 3 tương ứng.

Dữ liệu vào

  • Dòng đầu tiên chứa năm số nguyên N,M,Q,K,T (1≤N,Q≤400; 0≤K≤N; 1≤M≤105; 1≤T≤109).
  • Dòng thứ hai gồm K số nguyên đôi một phân biệt A1,A2,…,AK cho biết các thành phố có sân bay (1≤Ai≤N); dòng này để trống nếu K=0.
  • M dòng tiếp theo, mỗi dòng chứa ba số nguyên U,V,C cho biết có con đường nối hai thành phố U và V với thời gian di chuyển bằng ô tô là C phút (1≤U,V≤N; U≠V; 1≤C≤109).
  • Q dòng cuối cùng, mỗi dòng được viết theo một trong ba định dạng tương ứng với ba loại yêu cầu:
    • Loại 1: 1 X Y C, tức xây dựng một con đường mới nối hai thành phố X và Y với thời gian di chuyển bằng ô tô là C phút (1≤X,Y≤N; X≠Y; 1≤C≤109).
    • Loại 2: 2 X, tức xây dựng một sân bay mới tại thành phố X (1≤X≤N). Dữ liệu đảm bảo thành phố X chưa có sân bay trước yêu cầu này.
    • Loại 3: 3, tức yêu cầu tìm tổng thời gian tối thiểu.

Dữ liệu ra

Với mỗi yêu cầu loại 3, ghi một số nguyên trên một dòng là kết quả tương ứng.

Ràng buộc

  • 1≤N,Q≤400, 0≤K≤N, 1≤M≤105
  • 1≤T,C≤109

Subtasks

  • Subtask 1 (10% số điểm): N,Q≤100; M≤200; K=0 và không có yêu cầu loại 2.
  • Subtask 2 (20% số điểm): N,Q≤100.
  • Subtask 3 (30% số điểm): K=0 và không có yêu cầu loại 2.
  • Subtask 4 (40% số điểm): Không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
3 1 3 2 100
2 3
1 3 50
3
1 2 3 30
3
600
320
Lần đầu: F(1,2)=50+100 (đường 1−3 rồi bay 3→2), F(1,3)=50, F(2,3)=100; tổng hai chiều =2·(150+50+100)=600. Sau khi xây đường 2−3 dài 30: F(1,2)=80, F(1,3)=50, F(2,3)=30; tổng =320.
3 1 3 1 5
3
1 2 4
3
2 1
3
8
36
Ví dụ thêm. Lần đầu thành phố 3 không đi tới được (chỉ có một sân bay), các cặp đó tính F=0: tổng =4+4=8. Sau khi xây sân bay ở thành phố 1: F(1,3)=5, F(2,3)=4+5=9; tổng =2·(4+5+9)=36.

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