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

+ Recent posts