Multistage graph :Dynamic Programming as it needs to see all the possibilities from each vertex to mark the vertex as source or sink
Convex hull :Divide and Conquer as its algorithm divides the problem in upper convex and lower convex
Bi-connected components :Depth first search as Idea is to store visited edges in a stack while DFS on a graph and keep looking for Articulation Points(highlighted in above figure). As soon as an Articulation Point u is found, all edges visited while DFS from node u onwards will form one biconnected component. When DFS completes for one connected component, all edges present in stack will form a biconnected component.If there is no Articulation Point in graph, then graph is biconnected and so there will be one biconnected component which is the graph itself.
Knapsack problem :Greedy method as the knapsack needs to be filled with maximum profit possible.
All pairs shortest path: Dynamic programming as it needs to check all the possibilities from each vertex for shortest path
therefore Option D is correct