https://www.acmicpc.net/problem/1178
1178번: 간선 추가
첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (2 ≤ V ≤ 1,000, 1 ≤ E ≤ V×(V-1)/2) 정점에는 1부터 V까지 번호가 매겨져 있다고 생각한다. 이어서 E개의 줄에 걸쳐 간선을 이루는 두 점 a와 b
www.acmicpc.net
답이 되는 그래프는 한붓그리기가 가능해야 한다. 문제에서 주어진 그래프가 하나의 컴포넌트라는 보장이 없으므로, 이 컴포넌트를 하나로 합치는 동시에 홀수점의 개수가 0이나 2인 한붓그리기의 조건을 만족해야 한다.
풀이를 생각해 보면, 한붓그리기가 가능한 두 컴포넌트는 한 컴포넌트에서 한붓그리기의 끝 정점과 나머지 컴포넌트에서 한붓그리기의 시작 정점을 연결하는 간선을 추가하여 한붓그리기가 가능한 하나의 컴포넌트로 만들 수 있다.
즉, Union-Find를 써서 컴포넌트를 나누고, 각 컴포넌트에서 홀수점의 개수가 0또는 2가 되도록 간선을 추가하고, (컴포넌트-1) 의 간선을 추가하면 된다.
처음에는 이미 있는 간선을 내가 또 추가하면 안 된다고 생각했는데, 애초에 그렇게 하면 답이 없는 케이스가 있으니까 신경쓰지 말고 그냥 하면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 3090 차이를 최소로 (0) | 2023.01.05 |
---|---|
백준 7469 K번째 수 (0) | 2023.01.05 |
백준 15972 물탱크 (0) | 2023.01.05 |
백준 22348 헬기 착륙장 (0) | 2023.01.05 |
백준 1315 RPG (0) | 2023.01.05 |