code: def generate_simple_dense_hete_graph(num_edges_removed=0):
      # TODO: restrict value of num_edges_removed
      G = nx.DiGraph()
  
      for i in range(3):
          G.add_node(i, node_label=0, node_type=0)
  
      for i in range(3, 5):
          G.add_node(i, node_label=0, node_type=1)
  
      # message_type (0, 0, 0)
      cnt = 0
      for i in range(3):
          for j in range(3):
              if cnt >= num_edges_removed:
                  G.add_edge(i, j, edge_label=1, edge_type=0)
              cnt += 1
  
      # message_type (1, 1, 1)
      cnt = 0
      for i in range(3, 5):
          for j in range(3, 5):
              if cnt >= num_edges_removed:
                  G.add_edge(i, j, edge_label=1, edge_type=1)
              cnt += 1
  
      return G
  
imports: import numpy
  import networkx
  import random
  import torch
  import itertools
label_desc: Use image node_id 10 for calling a global function with example usage: generate_simple_dense_hete_graph(num_edges_removed) and returns: G