Cities: handle boundary made of multi-parts

with a std::set, you can do `explored_idx.count.member_id() != 0`