#include <iostream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/range/iterator_range.hpp>
using std::cout;
int main() {
boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> g;
add_edge(0, 1, g);
add_edge(1, 2, g);
for(auto v : make_iterator_range(vertices(g))) {
cout << v << " has " << degree(v, g) << " neighbor(s): ";
for(auto w : make_iterator_range(adjacent_vertices(v, g))) cout << w << ' ';
cout << '\n';
}
return 0;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KCiNpbmNsdWRlIDxib29zdC9ncmFwaC9hZGphY2VuY3lfbGlzdC5ocHA+CiNpbmNsdWRlIDxib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Cgp1c2luZyBzdGQ6OmNvdXQ7CgppbnQgbWFpbigpIHsKICBib29zdDo6YWRqYWNlbmN5X2xpc3Q8Ym9vc3Q6OnZlY1MsIGJvb3N0Ojp2ZWNTLCBib29zdDo6dW5kaXJlY3RlZFM+IGc7CiAKICBhZGRfZWRnZSgwLCAxLCBnKTsKICBhZGRfZWRnZSgxLCAyLCBnKTsKICAKICBmb3IoYXV0byB2IDogbWFrZV9pdGVyYXRvcl9yYW5nZSh2ZXJ0aWNlcyhnKSkpIHsKICAgIGNvdXQgPDwgdiA8PCAiIGhhcyAiIDw8IGRlZ3JlZSh2LCBnKSA8PCAiIG5laWdoYm9yKHMpOiAiOwogICAgZm9yKGF1dG8gdyA6IG1ha2VfaXRlcmF0b3JfcmFuZ2UoYWRqYWNlbnRfdmVydGljZXModiwgZykpKSBjb3V0IDw8IHcgPDwgJyAnOwogICAgY291dCA8PCAnXG4nOwogIH0KICByZXR1cm4gMDsKfQo=