Bóng thép

Đề bài

Mô tả

Cho n điểm phân biệt (x1,y1),(x2,y2),,(xn,yn) trên mặt phẳng và một số nguyên không âm k — đây là n quả bóng thép. Khi một quả bóng được tích điện, mọi quả bóng cách nó tối đa k đơn vị theo khoảng cách Manhattan sẽ bị kéo đến trùng vị trí với nó.

Cụ thể, nếu chọn quả bóng i để tích điện, thì với mọi j thỏa |xixj|+|yiyj|k, ta cập nhật xj:=xiyj:=yi. Nhiều quả bóng có thể nằm cùng vị trí sau thao tác.

Hãy tìm số thao tác ít nhất để đưa tất cả các quả bóng về cùng một vị trí, hoặc thông báo rằng điều đó là không thể.

Dữ liệu vào

Dòng đầu chứa số nguyên t — số lượng test.

Mỗi test bắt đầu bằng dòng chứa hai số nguyên n,k — số quả bóng và bán kính hút. Tiếp theo là n dòng, dòng thứ i chứa hai số nguyên xi,yi — tọa độ quả bóng thứ i. Các điểm trong cùng một test là phân biệt.

Dữ liệu ra

Với mỗi test, in ra một số nguyên — số thao tác tối thiểu, hoặc 1 nếu không thể.

Ràng buộc

  • 1t100
  • 2n100
  • 0k106
  • 0xi,yi105

Ví dụ

Input Output Giải thích
3
3 2
0 0
3 3
1 1
3 3
6 7
8 8
6 9
4 1
0 0
0 1
0 2
0 3
-1
1
-1
Test 1: k=2, không có quả bóng nào hút được cả hai quả còn lại nên đáp án là 1.
Test 2: tích điện bất kỳ quả bóng nào cũng đưa hai quả còn lại về vị trí của nó (mọi cặp đều có khoảng cách Manhattan 3).
Test 3: k=1 nhưng các điểm ngoài cùng cách nhau 3, không quả nào hút hết được.
1
2 1000000
0 0
100000 100000
1 Bán kính hút rất lớn, một thao tác là đủ.

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