trang chủ / đề bài / voi14_aznet

Mạng truyền thông

Đề bài

Mô tả

Ngân hàng AZ có n chi nhánh, mỗi chi nhánh có một máy chủ là đầu mối đảm bảo truyền thông với các chi nhánh còn lại. Các máy chủ ở các chi nhánh được đánh số từ 1 đến n. Để đảm bảo truyền thông giữa các chi nhánh, ngân hàng thuê m kênh truyền tin của hai công ty A và B để kết nối n máy chủ của các chi nhánh thành một mạng máy tính. Các kênh truyền tin được đánh số từ 1 đến m, không có hai kênh truyền tin nào kết nối cùng một cặp máy chủ. Kênh truyền tin i (thuê của công ty A hoặc B) đảm bảo việc truyền tin hai chiều giữa máy chủ của chi nhánh ui và vi (i=1,2,…,m). Mạng máy tính có tính chất thông suốt nghĩa là đảm bảo từ máy chủ của một chi nhánh bất kỳ có thể truyền tin đến tất cả các máy chủ của các chi nhánh còn lại theo kênh truyền tin trực tiếp giữa chúng hoặc thông qua đường truyền đi qua một số máy chủ của các chi nhánh nào đó.

Trong thời gian tới do tình hình tài chính gặp khó khăn, ngân hàng muốn cắt giảm tối đa việc thuê các kênh truyền tin nhưng vẫn đảm bảo mạng thông suốt. Do chi phí thuê bao phụ thuộc vào số lượng kênh truyền tin phải thuê, nên sau khi hỏi ý kiến các chuyên gia, ngân hàng được biết là để đảm bảo tính thông suốt của mạng, tối thiểu phải thuê n−1 kênh truyền tin. Từ bảng đơn giá thuê bao kênh truyền tin với hai công ty ta biết ak và bk tương ứng là giá thuê bao k kênh truyền tin của công ty A và B (k=1,2,…,n−1). Nếu không giữ lại kênh nào của một công ty thì không phải trả tiền cho công ty đó. Ngân hàng muốn tìm phương án giữ lại đúng n−1 kênh truyền tin trong số m kênh truyền tin đã thuê của hai công ty sao cho tổng chi phí thuê bao phải trả là nhỏ nhất mà vẫn đảm bảo tính thông suốt của mạng.

Yêu cầu: Cho biết danh sách các kênh truyền tin và các chi phí ak, bk (k=1,2,…,n−1). Hãy tìm phương án giữ lại đúng n−1 kênh truyền tin trong số m kênh truyền tin đã thuê của hai công ty sao cho tổng chi phí thuê bao phải trả là nhỏ nhất mà vẫn đảm bảo tính thông suốt của mạng.

Dữ liệu vào

Dòng đầu tiên chứa T là số lượng bộ dữ liệu. Tiếp đến là T nhóm dòng, mỗi nhóm dòng cho biết thông tin về một bộ dữ liệu theo khuôn dạng sau:

  • Dòng thứ nhất chứa hai số nguyên dương n, m;
  • Dòng thứ hai chứa n−1 số nguyên dương a1,a2,…,an−1, mỗi số nhỏ hơn 109;
  • Dòng thứ ba chứa n−1 số nguyên dương b1,b2,…,bn−1, mỗi số nhỏ hơn 109;
  • Dòng thứ i trong số m dòng tiếp theo chứa ba số nguyên dương ui, vi, ci cho biết thông tin về kênh truyền tin thứ i (i=1,2,…,m). Giả thiết ui khác vi, ci=1 nếu kênh truyền tin thuê của công ty A, ci=2 nếu kênh truyền tin thuê của công ty B.

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

Dữ liệu ra

In ra T dòng, mỗi dòng ghi kết quả của bộ dữ liệu tương ứng: chỉ số của n−1 kênh truyền tin được giữ lại, cách nhau bởi dấu cách. Nếu có nhiều cách thì in ra cách bất kì.

Ràng buộc

  • 1≤T≤10.
  • 2≤n≤104; n−1≤m≤105.
  • 1≤ak,bk<109.
  • 1≤ui,vi≤n, ui≠vi, không có hai kênh nối cùng một cặp máy chủ; mạng m kênh ban đầu thông suốt.

Subtasks

  • Subtask 1 (30% số điểm): n<10.
  • Subtask 2 (30% số điểm): n<100.
  • Subtask 3 (40% số điểm): n≤104, m≤105.

Mỗi subtask gồm nhiều test, mỗi test được chấm điểm riêng.

Ví dụ

Input Output Giải thích
1
3 3
1 2
1 5
1 2 1
1 3 2
2 3 2
1 3 Giữ kênh 1 (công ty A) và kênh 3 (công ty B): chi phí a1+b1=2. Giữ hai kênh 2, 3 của công ty B tốn b2=5. In 1 2 cũng đúng.
2
4 6
10 10 3
4 4 4
1 2 1
2 3 1
3 4 1
1 3 2
2 4 2
1 4 2
2 1
5
1
2 1 2
1 2 3
1
Bộ thứ nhất: giữ ba kênh của công ty A tốn a3=3 (không phải trả tiền cho công ty B); giữ ba kênh của B tốn b3=4; dùng cả hai công ty tốn ít nhất a1+b2=14. Bộ thứ hai chỉ có một kênh.

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