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

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

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

Connecting a Graph

返回题目

题解

그래프의 연결 컴포넌트 개수를 KKK라 하자.

서로 다른 두 연결 컴포넌트 사이에 간선을 하나 추가하면, 두 컴포넌트가 하나로 합쳐진다. 따라서 연결 컴포넌트 개수는 한 번의 간선 추가로 최대 111만 줄어든다. 모든 정점이 서로 연결되려면 컴포넌트가 하나만 남아야 하므로, 적어도 K−1K-1K−1개의 간선이 필요하다.

반대로, 각 연결 컴포넌트에서 대표 정점을 하나씩 고르고, 이 대표 정점들을 임의의 순서로 일렬로 연결하면 정확히 K−1K-1K−1개의 간선으로 전체 그래프가 연결된다. 그러므로 정답은 K−1K-1K−1이다.

연결 컴포넌트 개수는 분리 집합 자료구조를 이용하여 구할 수 있다. 처음에는 모든 정점이 서로 다른 집합에 속한다고 두고, 입력으로 주어진 각 간선 (ui,vi)(u_i,v_i)(ui​,vi​)에 대해 두 정점이 속한 집합을 합친다. 마지막에 서로 다른 대표자의 개수를 세면 KKK를 얻는다.

시간 복잡도는 O((N+M)α(N))O((N+M)\alpha(N))O((N+M)α(N))이다.

Solution written by GPT5.5