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

Alex và Julian

Đề bài

Mô tả

Cho tập B gồm n số nguyên dương phân biệt. Xét đồ thị vô hướng vô hạn: mỗi số nguyên là một đỉnh, hai đỉnh ij được nối với nhau bằng một cạnh khi và chỉ khi |ij| thuộc B.

Hãy xóa khỏi B một tập con có kích thước nhỏ nhất sao cho đồ thị xây dựng trên tập còn lại là đồ thị hai phía (bipartite), tức là có thể chia toàn bộ các đỉnh thành hai tập rời nhau sao cho mọi cạnh đều nối hai đỉnh thuộc hai tập khác nhau.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: kích thước của tập B.
  • Dòng thứ hai chứa n số nguyên phân biệt b1,b2,,bn: các phần tử của B.

Dữ liệu ra

  • Dòng đầu in số nguyên k: số phần tử cần xóa (nhỏ nhất có thể).
  • Dòng thứ hai in k số nguyên: các phần tử bị xóa. Nếu có nhiều đáp án, in một đáp án bất kỳ.

Ràng buộc

  • 1n200000
  • 1bi1018, các bi đôi một khác nhau.

Ví dụ

Input Output Giải thích
3
1 2 3
1
2
Xóa 2, còn lại {1,3} (toàn số lẻ). Tô màu đỉnh i theo tính chẵn lẻ của i: mọi cạnh nối hai đỉnh khác màu nên đồ thị hai phía. Giữ cả 3 phần tử thì tồn tại chu trình lẻ 0130.
2
2 6
0 Không cần xóa gì: tô màu đỉnh i theo tính chẵn lẻ của i/2 thì mọi cạnh (độ chênh 2 hoặc 6) đều nối hai đỉnh khác 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