in GraphSampling/meshPooler.h [205:241]
bool can_be_center(int p, int radius, const vector<vector<int>> &connection_map, const vector<int> &cover_lst) {
vector<int> interest_lst;
interest_lst.push_back(p);
set<int> visited;
visited.insert(p);
int r = 0;
while (r < radius) {
vector<int> new_interest_lst;
//cout<<interest_lst.size()<<"\n";
for (int i = 0; i < interest_lst.size(); i++) {
int interest_p = interest_lst[i];
vector<int> interest_p_connection_map = connection_map[interest_p];
for (int j = 0; j < interest_p_connection_map.size(); j++) {
int neighbor_p = interest_p_connection_map[j];
if (cover_lst[neighbor_p] == 1) {
return false;
}
set<int>::iterator it = visited.find(neighbor_p);
if (it == visited.end()) { //not visited
//cout<<"neighbor ";
visited.insert(neighbor_p);
new_interest_lst.push_back(neighbor_p);
}
}
}
interest_lst = new_interest_lst;
r = r + 1;
}
return true;
}