Implement a nice graph datastructure. Implement two different greedy graph coloring algorithms. Shortest path algorithm and MST algorithms. The input is an adjacancy matrix. The output of the graph coloring is adjacancy matrix and the colors for each vertex. For the shortest path the output is a related matix and for the MST the output is the Graph.