#pragma once
#ifndef ___VertexSets
#define ___VertexSets
//VertexSet.h : Union-Find 연산을 위한 정점 집합 클래스 구현
#define MAX_VTXS 256
class VertexSets {
int parent[MAX_VTXS]; //부모 정점의 id
int nSets; //집합의 개수
public:
VertexSets(int n) : nSets(n) {
for (int i = 0; i < nSets; i++)
parent[i] = -1; //모든 정점이 고유의 집합에 속함
}
bool isRoot(int i) { return parent[i] < 0; }
int findSet(int v) {
while (!isRoot(v)) v = parent[v];
return v;
}
void unionSets(int s1, int s2) { //집합 s1을 집합 s2에 합침
parent[s1] = s2;
nSets--;
}
};
#endif // !___VertexSets
'Programming > DS SorceCode' 카테고리의 다른 글
MInHeap.h : 최소 힙 클래스 + Kruskal 알고리즘 구현을 위한 함수 추가 (0) | 2019.04.01 |
---|---|
HeapNode : 힙에 저장할 노드 클래스 / Kruskal의 최소 비용 신장 트리 프로그램을 위한 노드 클래스 (0) | 2019.04.01 |
WGraph.h : 가중치 그래프 클래스 (0) | 2019.04.01 |
TopoSortGraph.h : 위상 정렬 기능이 추가된 인접 리스트 기반 그래프 (0) | 2019.04.01 |
SrchALGraph.h ; 탐색 기능이 추가된 인접 리스트 기반 그래프 클래스 (0) | 2019.04.01 |