초보개발자

[LAN] 근거리 네트워크 본문

알고리즘/문제해결 소스코드

[LAN] 근거리 네트워크

___yejin 2017. 3. 2. 13:38
  • 분류: 그래프, 트리
  • 난이도: 하
  • 입력: 테스트 케이스 C(<=50), 건물의 수 N(<=500), 이미 설치된 케이블의 수 M(<=2000), 0부터 N-1까지의 x좌표와 y좌표, 이미 설치된 건물의 번호 두 정수
  • 출력: 모든 건물을 연결해야 할 때, 추가로 설치해야 할 케이블의 총 길이
  • 소스코드
  • 소스설명: 1. disjoinSet : 상호배타적 집합 구조체. parent는 부모, rank는 깊이. find는 루트번호를 반환하며, merge는 각 집합을 합치는 함수이다.

2. kruskal(const int n, disjointSet& set): 크루스칼 최소 스패닝 트리 알고리즘을 이용. 간선의 집합을 만들어 가중치에 따라 정렬을 한다.

가장 짧은 간선을 추가하는데, 이 때 사이클이 생기지 않게 추가해야 한다. 위 구조체를 이용하여 만들 수 있다.


Comments