#include #include #include #include #include using namespace boost; int main(int argc, char* argv[]) { typedef adjacency_list > UGraph; typedef std::pair Edge; int vertexCount = 21; Edge edgeArray[] = { Edge(1, 2), Edge(1, 4), Edge(2, 3), Edge(2, 4), Edge(3, 1), Edge(3, 5), Edge(4, 3), Edge(5, 6), Edge(6, 7), Edge(6, 10), Edge(6, 12), Edge(7, 5), Edge(7, 8), Edge(7, 9), Edge(10, 4), Edge(10, 11), Edge(10, 13), Edge(11, 6), Edge(12, 10), Edge(12, 11), Edge(13, 14), Edge(14, 4), Edge(14, 10), Edge(14, 15), Edge(16, 17), Edge(17, 19), Edge(18, 16), Edge(19, 18), Edge(20, 16) }; int weightArray[] = { 3, 1, 1, 2, 1, 1, 3, 2, 1, 3, 1, 1, 2, 1, 2, 1, 2, 1, 3, 2, 2, 1, 1, 3, 3, 2, 1, 3, 1 }; int edgeCount = sizeof(edgeArray) / sizeof(Edge); UGraph g(edgeArray, edgeArray + edgeCount, weightArray, vertexCount); std::vector coreArray(num_vertices(g)); weighted_core_numbers(g, make_iterator_property_map(coreArray.begin(), get(vertex_index,g))); for (size_t i = 0; i < num_vertices(g); ++i) { std::cout << "vertex " << i << " core " << coreArray[i] << std::endl; } return 0; }