void examining_node(node_t u, Graph & g){ cout << " examining node " << u->id() << "\n"; }
void discover_node(node_t u, Graph & g){ cout << "discovered node " << u->id() << "\n"; }
auto operator()(const node_t& a, const node_t& b) { return _matrix(a.id(), b.id()); }