cgv
union_find.h
1
#pragma once
2
3
#include <vector>
4
5
namespace
cgv
{
6
namespace
data {
7
8
struct
union_find :
public
std::vector<unsigned int>
9
{
11
union_find(
unsigned
int
n) { init(n); }
13
void
init(
unsigned
int
n) {
14
resize(n);
15
for
(
unsigned
int
i=0; i<n; ++i)
16
at(i) = i;
17
}
19
unsigned
int
find(
unsigned
int
i)
20
{
21
// find representative j
22
unsigned
int
j = i;
23
while
(at(j) != j)
24
j = at(j);
25
// compress path
26
while
(i != j) {
27
unsigned
int
tmp = at(i);
28
at(i) = j;
29
i = tmp;
30
}
31
return
j;
32
}
34
void
unify(
unsigned
int
i,
unsigned
int
j)
35
{
36
at(find(i)) = j;
37
}
38
};
39
40
}
41
}
cgv
the cgv namespace
Definition:
vr_calib.cxx:9
projects
git
cgv
cgv
data
union_find.h
Generated by
1.8.18