trang chủ / bài tập / xorstree

Cây khung XOR

Đề bài

Mô tả

Cho một đồ thị vô hướng liên thông gồm N đỉnh và M cạnh có trọng số. Mỗi cạnh nối hai đỉnh khác nhau, và không có hai cạnh nào cùng nối một cặp đỉnh.

Cấu trúc của đồ thị được đảm bảo có tính chất đặc biệt sau:

  • Mỗi đỉnh thuộc nhiều nhất một chu trình đơn (chu trình đơn là một đường đi khép kín xuất phát và kết thúc tại cùng một đỉnh, đi qua các đỉnh khác không quá một lần).
  • Đồ thị có nhiều nhất 42 chu trình đơn như vậy.

Bạn cần chọn ra một tập cạnh sao cho tất cả các đỉnh vẫn liên thông (tức là một cây khung của đồ thị). "Chi phí" của một tập cạnh được định nghĩa là XOR của trọng số các cạnh trong tập:

Cost=Wi1Wi2Wik

Hãy tìm:

  1. Giá trị chi phí nhỏ nhất có thể.
  2. Số cách chọn tập cạnh đạt được chi phí nhỏ nhất đó, lấy dư cho 109+7.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên NM — số đỉnh và số cạnh.
  • M dòng tiếp theo, mỗi dòng chứa ba số nguyên U, V, W mô tả một cạnh nối đỉnh U với đỉnh V có trọng số W.

Dữ liệu ra

In ra hai số nguyên trên một dòng: chi phí nhỏ nhất và số cách chọn (mod 109+7).

Ràng buộc

  • 1N100000
  • 1M100041
  • 1UVN
  • 1W100000
  • Đồ thị liên thông.
  • Mỗi đỉnh nằm trong nhiều nhất một chu trình đơn, và tổng số chu trình đơn không vượt quá 42.

Ví dụ

Input Output Giải thích
6 6
4 1 5
5 2 1
6 3 2
1 2 6
1 3 3
2 3 4
1 1 Chọn các cạnh 1,2,3,5,6 với tổng XOR =51234=1. Đây là cách duy nhất đạt chi phí 1.
9 10
8 7 10
3 6 11
3 8 3
4 5 1
9 3 11
7 3 1
2 6 10
9 4 13
1 6 4
5 9 6
0 2 Có hai cách chọn cây khung với chi phí 0.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0