티스토리 뷰

컴퓨터공학/Problem Solving

백준 16562

_Bibidi 2021. 1. 20. 14:29

 

 

16562번: 친구비

첫 줄에 학생 수 N (1 ≤ N ≤ 10,000)과 친구관계 수 M (0 ≤ M ≤ 10,000), 가지고 있는 돈 k (1 ≤ k ≤ 10,000,000)가 주어진다. 두번째 줄에 N개의 각각의 학생이 원하는 친구비 Ai가 주어진다. (

www.acmicpc.net

 

  제목부터 슬픈 문제. 서로 연결되어 있는 것들을 처리해야 해서 처음엔 Connected Component를 구해서 어찌어찌 처리해야 하나 했지만 친구비를 아끼기 위해 친구 집합의 최소 친구비를 구해야 된다. 트리를 이용하면 루트에 최소 친구비를 업데이트 할 수 있고 두 트리를 합칠 땐 유니온 파인드를 이용하면 된다.

 

  유니온 파인드의 merge를 구현할 때 왼쪽을 우리와 이미 친구인 집합 오른쪽을 새로 친구가 되는 집합이라 하고 한쪽으로만 붙여 나가며 루트를 업데이트 하면 구현이 간단하다.

 

 - Source code link

github.com/Bibidi/Algorithms/blob/master/boj/boj%2016562.cpp

'컴퓨터공학 > Problem Solving' 카테고리의 다른 글

백준 10775  (0) 2021.01.21
백준 14868  (0) 2021.01.20
백준 15686  (0) 2021.01.19
백준 2533  (0) 2021.01.18
백준 1949  (0) 2021.01.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함