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

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

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

그래프 연결하기

문제로 돌아가기

해설

그래프의 연결 컴포넌트 개수를 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