아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

영역 전쟁

시간 제한2초메모리 제한512 MB

요약
각 갱단은 서로 겹치지 않는 축에 평행한 직사각형 여러 개를 소유한다. 갱단마다 정확히 하나씩 포기해서 서로 다른 갱단의 남은 직사각형이 겹치지 않게 만들 수 있는지 판정한다.
난이도

어려움10점 중 8점

유형
기하, 완전 탐색, 백트래킹, 구현
정답자
아직 제출이 없습니다

문제

도시에는 NN개의 갱이 있다. 각 갱은 직사각형 모양의 영역 여러 개를 차지하고 있으며, 서로 다른 갱의 영역이 겹치면 분쟁이 생긴다.

NN은 2≤N≤3002 \le N \le 300을 만족하고, ii번째 갱은 MiM_i개의 영역을 가진다. 모든 영역은 xx축과 yy축에 평행한 변을 가진 직사각형이며, 왼쪽 아래 꼭짓점 (x1,y1)(x_1, y_1)과 오른쪽 위 꼭짓점 (x2,y2)(x_2, y_2)로 주어진다. 좌표는 0≤x1<x2<10000000 \le x_1 < x_2 < 1000000과 0≤y1<y2<10000000 \le y_1 < y_2 < 1000000을 만족하는 정수이다.

서로 다른 갱에 속한 두 영역이 양의 넓이로 겹치는 부분이 분쟁 지역이다. 변이나 꼭짓점만 맞닿는 경우는 분쟁 지역이 아니다.

각 갱은 자신의 MiM_i개 영역 중 정확히 하나를 포기해야 한다. 포기한 영역을 제외한 모든 영역 사이에 분쟁 지역이 하나도 없도록 할 수 있는지 판정하라.

입력

첫째 줄에 갱의 수 NN이 주어진다.

이어서 11번 갱부터 NN번 갱까지 각 갱의 영역 정보가 순서대로 주어진다. ii번째 갱에 대한 입력의 첫째 줄에는 영역의 개수 MiM_i(2≤Mi≤152 \le M_i \le 15)가 주어진다. 이어지는 MiM_i개의 줄에는 각 영역의 왼쪽 아래 꼭짓점과 오른쪽 위 꼭짓점의 좌표 x1x_1, y1y_1, x2x_2, y2y_2가 공백으로 구분되어 주어진다.

한 갱이 가진 영역들은 서로 겹치지 않는다.

출력

각 갱이 영역을 하나씩 포기하여 모든 분쟁 지역을 없앨 수 있으면 YES를, 그럴 수 없으면 NO를 출력한다.

힌트

어떤 영역이 다른 갱의 서로 다른 두 영역과 겹치면, 그 영역은 반드시 포기해야 한다. 반대로 남기기로 한 영역과 겹치는 상대 영역은 반드시 포기되어야 하므로, 하나의 선택이 다른 갱의 선택을 연쇄적으로 강제할 수 있다.

예제2

  1. 예제 1

    입력
    2
    2
    1 1 4 5
    100 100 101 101
    3
    1 1 3 3
    3 3 6 7
    90 95 105 110
    
    예상 출력
    YES
    
  2. 예제 2

    입력
    2
    2
    1 1 2 5
    4 1 5 5
    2
    1 1 5 2
    1 4 5 5
    
    예상 출력
    NO