'Finds other start nodes of the graph in the case when graph is disconneted'

def find_starts(self):

    rem_nodes = []
    for node in self.nodes:
        if (not self.partial_order.get(node)):
            rem_nodes.append(node)
    cnt = 0
    while True:
        if (len(rem_nodes) == 1):
            self.start_nodes.append(rem_nodes[0])
            break
        else:
            count = 0
            new_start = rem_nodes[0]
            largest_tree = []
            for node in rem_nodes:
                self.partial_order = {}
                tree = self.make_acyclic(None, node, 0, [])
                if ((len(tree) + 1) > count):
                    count = (len(tree) + 1)
                    new_start = node
                    largest_tree = tree
            else:
                if (not largest_tree):
                    new_start = rem_nodes[0]
                    rem_nodes.remove(new_start)
            self.start_nodes.append(new_start)
            for edge in largest_tree:
                if (edge[0] in rem_nodes):
                    rem_nodes.remove(edge[0])
                if (edge[1] in rem_nodes):
                    rem_nodes.remove(edge[1])
            if (not rem_nodes):
                break
