trang chủ / đề bài / dhbb14_service

Dịch vụ truyền thông

Đề bài

Mô tả

Công ty cung cấp dịch vụ mạng HDS vừa thiết lập một mạng truyền thông, mạng bao gồm n nút và m kênh nối trực tiếp một chiều giữa hai nút. Các nút được đánh số từ 1 đến n, các kênh nối được đánh số từ 1 đến m. Kênh nối thứ i cho phép truyền tin (một chiều) từ nút ui tới nút vi và có độ trễ là c(ui,vi). Có không quá một kênh truyền tin từ một nút đến một nút khác. Một đường truyền tin từ nút s đến nút t được biểu diễn dưới dạng một dãy liên tiếp các chỉ số của các nút, xuất phát từ s và kết thúc tại t. Độ trễ của đường truyền tin được định nghĩa là tổng độ trễ của các kênh nối trực tiếp trên đường truyền tin đó.

Để đánh giá mạng truyền thông, công ty đưa ra kịch bản kiểm tra như sau: Ban đầu tất cả n nút đều ở chế độ không chuyển tiếp tin; có k thao tác thuộc một trong hai loại sau:

  • Loại 1, nhận một chỉ số x (1≤x≤n) có ý nghĩa: kích hoạt nút x sang chế độ được chuyển tiếp tin (kích hoạt một nút đã được kích hoạt thì không có thay đổi gì);
  • Loại 2, nhận hai chỉ số x,y (1≤x,y≤n) có ý nghĩa: cần tính độ trễ của đường truyền tin từ nút x đến nút y (không đi qua nút ở chế độ không chuyển tiếp tin) có độ trễ nhỏ nhất, nếu không tồn tại đường truyền thì đưa ra −1.

Điều kiện "không đi qua nút ở chế độ không chuyển tiếp tin" chỉ áp dụng cho các nút trung gian của đường truyền: hai nút đầu x và cuối y không cần được kích hoạt. Khi x=y, đường truyền chỉ gồm một nút x và có độ trễ bằng 0.

Yêu cầu: Cho biết mạng truyền thông của công ty HDS và kịch bản kiểm tra gồm k thao tác, hãy thực hiện lần lượt từng thao tác và với mỗi thao tác loại 2 thì đưa ra độ trễ nhỏ nhất cần tính.

Dữ liệu vào

  • Dòng đầu tiên chứa 3 số nguyên dương n,m,k.
  • Dòng thứ i trong số m dòng tiếp theo ghi ba số nguyên dương ui,vi,c(ui,vi) lần lượt là chỉ số đầu, chỉ số cuối và độ trễ của kênh thứ i (ui≠vi). Độ trễ của các kênh là nhỏ hơn 109.
  • k dòng tiếp theo mô tả kịch bản, cụ thể:
    • Nếu thao tác thứ j thuộc loại 1 thì dòng thứ j gồm 2 số, số thứ nhất bằng 1 và số thứ hai là chỉ số nút;
    • Nếu thao tác thứ j thuộc loại 2 thì dòng thứ j gồm 3 số, số thứ nhất bằng 2 và hai số sau là hai chỉ số nút.

Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra

Gồm một số dòng, mỗi dòng là câu trả lời cho thao tác loại 2 xuất hiện lần lượt trong kịch bản.

Ràng buộc

  • 2≤n≤500; 1≤m≤n(n−1); 1≤k≤106.
  • 1≤ui,vi≤n, ui≠vi; không có hai kênh cùng đi từ một nút đến cùng một nút.
  • 1≤c(ui,vi)<109.
  • Kịch bản có ít nhất một thao tác loại 2.

Subtasks

  • Subtask 1 (20 điểm): n≤10, k≤10.
  • Subtask 2 (20 điểm): n≤100, k≤102.
  • Subtask 3 (30 điểm): n≤500, k≤106.

Ví dụ

Input Output Giải thích
4 5 5
1 4 1
1 3 5
1 2 1
4 3 1
2 3 2
2 1 3
1 2
2 1 3
1 4
2 1 3
5
3
2
Lúc đầu chưa nút nào được kích hoạt, chỉ dùng được kênh trực tiếp 1→3 (độ trễ 5). Sau khi kích hoạt nút 2: đường 1→2→3 có độ trễ 3. Sau khi kích hoạt thêm nút 4: đường 1→4→3 có độ trễ 2.
3 3 7
1 2 4
2 3 5
3 1 6
2 1 3
2 2 2
1 2
2 1 3
1 2
2 3 2
2 3 1
-1
0
9
-1
6
Ví dụ bổ sung. Các kênh là một chiều nên ban đầu không có đường từ 1 đến 3. Với x=y=2 độ trễ là 0. Sau khi kích hoạt nút 2: 1→2→3 có độ trễ 9. Kích hoạt lại nút 2 không thay đổi gì. Đường 3→1→2 phải đi qua nút 1 chưa kích hoạt nên đáp án là −1, còn 3→1 là kênh trực tiếp.

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