а) Suppоse yоu wаnt tо аdd a vertex to a graph of n vertices and m edges. Assume that this graph is implemented using an adjacency matrix of exactly the right size needed for the graph. Express (using big-O notation) the order of growth of the worst-case running time of this operation, in terms of m and n. Explain your answer in enough detail to be convincing. b) Suppose you have a graph like the one below. The dots signify some part of the graph that you don’t know exactly, not a straight link. You know however, that there are many paths from the start to the goal. You also know that they tend to be rather long. Suppose that you want to implement a program that searches for a path and returns the first one it can find. You have no need for finding the optimal path in any sense, just any path will do. Between BFS and DFS, which one do you want to use as the basis for you program? Justify your answer in at most two sentences. c) Suppose that you want to select from BFS and DFS to find the shortest path in an unweighted graph (i.e. each edge has the same cost, say 1). Which one is the right choice? Justify your choice.