Weighted Directed Graphs C++

Your task is to implement a directed_graph class, where each node/edge has a weight.  (Please use adjacency matrix)

The class should offer a reasonably effective suite of operations. Some (but not all) of basic operations are:

Adding and removing nodes and edges (with weights);

Depth-first and breadth-first traversals;

Computing a tree rooted by the given vertex (the tree may not contain all vertices of the graph);

Pre-order, in-order, and post-order traversals of the tree;