code: def get_largest_component(G, strongly=False):
      
  
      start_time = time.time()
      original_len = len(list(G.nodes()))
  
      if strongly:
          # if the graph is not connected retain only the largest strongly connected component
          if not nx.is_strongly_connected(G):
              
              # get all the strongly connected components in graph then identify the largest
              sccs = nx.strongly_connected_components(G)
              largest_scc = max(sccs, key=len)
              G = induce_subgraph(G, largest_scc)
              
              msg = ('Graph was not connected, retained only the largest strongly '
                     'connected component ({:,} of {:,} total nodes) in {:.2f} seconds')
              log(msg.format(len(list(G.nodes())), original_len, time.time()-start_time))
      else:
          # if the graph is not connected retain only the largest weakly connected component
          if not nx.is_weakly_connected(G):
              
              # get all the weakly connected components in graph then identify the largest
              wccs = nx.weakly_connected_components(G)
              largest_wcc = max(wccs, key=len)
              G = induce_subgraph(G, largest_wcc)
              
              msg = ('Graph was not connected, retained only the largest weakly '
                     'connected component ({:,} of {:,} total nodes) in {:.2f} seconds')
              log(msg.format(len(list(G.nodes())), original_len, time.time()-start_time))
  
      return G
docs: Return a subgraph of the largest weakly or strongly connected component
      from a directed graph.
  
      Parameters
      ----------
      G : networkx multidigraph
      strongly : bool
          if True, return the largest strongly instead of weakly connected
          component
  
      Returns
      -------
      G : networkx multidigraph
          the largest connected component subgraph from the original graph