bool can_be_center()

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;
    }