Grid
시간 제한2초메모리 제한1024 MB
거대한 격자에서 이미 막힌 칸들이 주어질 때, 빈 칸들이 두 개 이상의 연결 영역으로 나뉘도록 추가로 막아야 하는 칸 수의 최솟값을 구하고, 불가능하면 -1을 출력한다.
문제
There is an grid where cells are 1 cells and the rest of the cells are 0 cells.
We say two cells sharing an edge are adjacent. We say two 0 cells are connected if and only if the two 0 cells are adjacent or there exists the third 0 cell that is connected with both cells.
Now we want to replace some (zero, one, or multiple) 0 cells by 1 cells so that after the replacement there exists two zero cells that are not connected with each other.
For example, if there is a grid where the top-left and the bottom-right corners are 1 cells and the rest are 0 cells, then it is optimal to replace 2 0 cells by 1 cells so that there exists two 0 cells that are disconnected from each other: for example, one possible solution is to replace the other two 0 cells on the diagonal connecting the top-left and the bottom-right corners.
You need to check if the goal can be achieved. If the goal can be achieved, you need to output the minimum number of 0 cells that should be made into 1 cells.
입력
Each test input consists of multiple test cases. The first line of the input file consists of an integer denoting the number of test cases in the input file. test cases follow.
The first line of each test case consists of three integers . In the following lines, each line consists of two integers denoting the cell on the -th row and the -th column is an 1 cell. The same 1 cell won't appear multiple times in the same test case.
Two neighboring integers in a line is separated by a space.
출력
For each test case, output a line denoting the answer.
If in the test case, it is impossible to disconnect two 0 cells, output -1. Otherwise, output the minimum number of 0 cells that should be replaced by 1 cells.
힌트
For all test cases, , .
Let denote the sum of among the test cases in an input file. It is guaranteed that .