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

Tô màu đồ thị

Đề bài

Mô tả

Cho một đồ thị vô hướng gồm n đỉnh và m cạnh. Ban đầu mỗi cạnh được tô màu đỏ (R) hoặc xanh (B).

Trong mỗi lượt, bạn chọn một đỉnh và đảo màu tất cả các cạnh kề với đỉnh đó: mọi cạnh đỏ kề đỉnh này chuyển thành xanh, và mọi cạnh xanh kề đỉnh này chuyển thành đỏ.

Hãy tìm số lượt ít nhất để làm cho tất cả các cạnh có cùng một màu.

Đồ thị không có khuyên (cạnh nối một đỉnh với chính nó) và không có cạnh lặp (giữa hai đỉnh có nhiều nhất một cạnh).

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm: số đỉnh và số cạnh.
  • m dòng tiếp theo, dòng thứ i chứa hai số nguyên ui, vi và một ký tự ci: cạnh nối đỉnh ui với vi có màu ban đầu là ci (R nếu đỏ, B nếu xanh).

Dữ liệu ra

  • Nếu không thể làm cho tất cả các cạnh cùng màu, in ra 1.
  • Ngược lại, dòng đầu in số lượt ít nhất k; dòng thứ hai in k số nguyên là chỉ số các đỉnh được chọn (theo thứ tự bất kỳ). Nếu có nhiều phương án tối ưu, in ra bất kỳ phương án nào.

Ràng buộc

  • 1n,m105
  • 1ui,vin, uivi
  • ci{R,B}

Ví dụ

Input Output Giải thích
6 5
1 3 R
2 3 R
3 4 B
4 5 R
4 6 R
2
3 4
Chọn đỉnh 3 rồi đỉnh 4, sau đó tất cả các cạnh đều cùng màu.
3 3
1 2 B
3 1 R
3 2 B
1
2
Chọn đỉnh 2 làm tất cả các cạnh thành đỏ.
4 5
1 2 R
1 3 R
2 3 B
3 4 B
1 4 B
-1 Không có cách nào làm mọi cạnh cùng màu.

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 1.26.3 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