code: def add_winners(self, G, I, known_winners, stats, possible_winners = None):
          
          if possible_winners is None:
              G_in_degree = G.in_degree(I)
              to_be_added = set([x[0] for x in G_in_degree if x[1] == 0])
          else:
              to_be_added = possible_winners
          for c in to_be_added:
              if c not in known_winners:
                  known_winners.add(c)
                  stats.discovery_states[c] = stats.num_nodes
                  stats.discovery_times[c] = time.perf_counter() - self.BEGIN
                  if self.debug_mode >= 2:
                      print("Found new winner:", c)
docs: Adds the winners of completed RP graph G
          :param G: networkx graph, should be final resulting graph after running RP
          :param I: list of all nodes
          :param known_winners: list of winners found so far, will be updated
          :param stats: Stats class storing run statistics
          :param possible_winners: Can optionally pass in possible winners if already computed to avoid re-computing here