def _get_connected_subgraphs(vertices, vertices_neighbours):
    """Break a graph containing unconnected subgraphs into a list of connected
    subgraphs.

    Returns
    -------
    [set([vertex, ...]), ...]
    """
    remaining_vertices = set(vertices)
    subgraphs = []
    while remaining_vertices:
        subgraph = set(_dfs(remaining_vertices.pop(), vertices_neighbours))
        remaining_vertices.difference_update(subgraph)
        subgraphs.append(subgraph)

    return subgraphs