DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Recognizing Convex Grid Graphs

返回题目

题解

점의 집합을 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