Finding the longest path in an equally-weighted tree
(defn farthest [edg current-node entry-node len]
    (let [ 
        farthest-key (atom current-node)
        farthest-val (atom len)
        ]
        (do
            (dorun 
                (map
                    (fn [n]
                        ...
                    )
                    (aget edg current-node)
                )
            )

            [@farthest-key @farthest-val]
        )
    )
)




Put )s and ] on the same line as the expression they close.
Put the first let-binding and [ on the same line.
You can use doseq instead of (dorun (map ...))
You can drop the do, since let has an implicit do around its body


E.g.,

(defn farthest [edg current-node entry-node len]
  (let [farthest-key (atom current-node)
        farthest-val (atom len)]
    (doseq [n (aget edg current-node)]
      ...)
    [@farthest-key @farthest-val]))


But also, think functional:


You don't need atoms (e.g., use reduce to find the maximum path, rather than an imperative loop).
Don't use arrays.  Use Clojure's persistent data structures instead.  For example, represent the tree as a map from node ids to a set connected nodes.