code: def get_main_chain(self):
          
          pre_node = {}
          distance = {}
          for i in range(self.n_nodes):
              distance[i] = 0
              pre_node[i] = i
          for i in range(self.n_nodes - 1):
              for u in range(self.n_nodes):
                  for v, _ in self.adj_list[u]:
                      if distance[u] + 1 > distance[v]:
                          distance[v] = distance[u] + 1
                          pre_node[v] = u
          temp_id = 0
          for i in range(self.n_nodes):
              if distance[i] > distance[temp_id]:
                  temp_id = i
          ret = []
          for i in range(self.n_nodes + 5):
              ret.append(temp_id)
              if pre_node[temp_id] == temp_id:
                  break
              temp_id = pre_node[temp_id]
          assert temp_id == pre_node[temp_id]
          ret.reverse()
          return ret
docs: Returns the main chain node ID list.