trang chủ / đề bài / simplify

Cây Khung Nhỏ Nhất

Đề bài

Mô tả

Cho đồ thị vô hướng liên thông N đỉnh, M cạnh có trọng số. Mỗi giá trị trọng số xuất hiện tối đa 3 lần. Đồ thị có thể có cạnh lặp (nhiều cạnh nối cùng một cặp đỉnh) và khuyên (cạnh nối một đỉnh với chính nó).

Hai cây khung được coi là khác nhau nếu tập cạnh được chọn khác nhau (hai cạnh lặp nối cùng một cặp đỉnh vẫn là hai cạnh khác nhau).

Hãy tìm:

  1. Tổng trọng số của cây khung nhỏ nhất (MST).
  2. Số lượng cây khung nhỏ nhất khác nhau (modulo 109+7).

Dữ liệu vào

  • Dòng 1: Hai số nguyên N và M
  • M dòng tiếp theo: Ba số nguyên Ai,Bi,Wi là cạnh nối Ai với Bi có trọng số Wi

Dữ liệu ra

  • Một dòng chứa hai số: tổng trọng số MST (giá trị thật, không lấy modulo) và số MST khác nhau (mod 109+7).

Ràng buộc

  • 1≤N≤40000
  • 1≤M≤100000
  • 1≤Ai,Bi≤N
  • 1≤Wi≤106
  • Mỗi giá trị trọng số xuất hiện tối đa 3 lần

Ví dụ

Input Output Giải thích
4 5
1 2 1
3 4 1
1 3 2
1 4 2
2 3 2
4 3 Hai cạnh trọng số 1 luôn được chọn, gộp thành hai nhóm {1,2} và {3,4}. Cả ba cạnh trọng số 2 đều nối hai nhóm này nên chỉ chọn đúng một trong ba: tổng =4, có 3 MST.
3 4
1 2 1
1 2 1
2 3 2
1 3 2
3 4 Hai cạnh trọng số 1 là cạnh lặp giữa 1 và 2: chọn một trong hai, có 2 cách. Sau đó 1 và 2 chung một nhóm, hai cạnh trọng số 2 đều nối nhóm đó với đỉnh 3: lại 2 cách. Tổng =3, số MST =2×2=4.

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