def find_minimum_spanning_forest(graph):
msf = []<EOL>if graph.num_nodes() == <NUM_LIT:0>:<EOL><INDENT>return msf<EOL><DEDENT>if graph.num_edges() == <NUM_LIT:0>:<EOL><INDENT>return msf<EOL><DEDENT>connected_components = get_connected_components_as_subgraphs(graph)<EOL>for subgraph in connected_components:<EOL><INDENT>edge_list = kruskal_mst(subgraph)<EOL>msf.append(edge_list)<EOL><DEDENT>return msf<EOL>
Calculates the minimum spanning forest of a disconnected graph.
    Returns a list of lists, each containing the edges that define that tree.
    Returns an empty list for an empty graph.