DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

볼록 격자 그래프 판별하기

문제로 돌아가기

해설

점의 집합을 SSS라고 하자. 다음 세 조건이 모두 성립하는지 확인하면 된다.

  • 같은 xxx좌표를 갖는 점들의 yyy좌표가 빈틈없이 연속한다.
  • 같은 yyy좌표를 갖는 점들의 xxx좌표가 빈틈없이 연속한다.
  • 그래프가 연결되어 있다.

먼저 이 조건들이 필요함을 보이자. 같은 xxx좌표를 갖는 두 점 (x,a)(x,a)(x,a)와 (x,b)(x,b)(x,b)를 생각하자. 두 점의 맨해튼 거리는 ∣a−b∣|a-b|∣a−b∣이다. 길이가 정확히 인 경로는 가로 방향 간선을 사용할 수 없다. 따라서 두 점 사이의 모든 격자점 가 존재해야 한다. 같은 방법으로 같은 좌표를 갖는 점들의 좌표도 연속해야 한다. 모든 두 정점 사이의 거리가 유한해야 하므로 그래프는 연결되어 있어야 한다.

반대로 세 조건이 모두 성립한다고 하자. 두 정점 u,vu,vu,v 사이의 최단 경로 하나를 고른다. 이 경로가 오른쪽과 왼쪽 방향 간선을 모두 사용한다고 가정하자. 그러면 경로 위에서 xxx좌표가 같은 두 정점을 끝점으로 하고, 내부에 가로 방향 간선을 포함하는 부분 경로를 고를 수 있다. 같은 xxx좌표 위의 점들은 연속하므로 두 끝점을 세로 방향으로 곧게 연결할 수 있다. 이 경로는 가로 방향 간선을 포함한 기존 부분 경로보다 짧으므로 최단 경로라는 가정에 모순이다. 따라서 최단 경로의 xxx좌표는 한 방향으로만 변한다. 같은 논리로 yyy좌표도 한 방향으로만 변한다. 그러므로 최단 경로의 길이는 정확히 맨해튼 거리이다.

구현에서는 점의 번호를 (x,y)(x,y)(x,y) 순서로 정렬한다. 같은 xxx좌표를 갖는 인접한 두 점의 yyy좌표 차이가 항상 111인지 확인하고, 차이가 111이면 DSU로 합친다. 다음으로 (y,x)(y,x) 순서로 정렬하여 같은 검사를 반복한다. 빈틈이 하나라도 있으면 답은 이다. 모든 검사가 끝난 뒤 모든 점이 하나의 DSU 집합에 속하면 , 아니면 이다.

정렬이 두 번 필요하므로 시간 복잡도는 O(Nlog⁡N)O(N\log N)O(NlogN)이고, 메모리 복잡도는 O(N)O(N)O(N)이다.

∣a−b∣|a-b|
∣a−b∣
(x,y)(x,y)(x,y)
yyy
xxx
(y,x)
NO
YES
NO