# 2359. Find Closest Node to Given Two Nodes
###### tags: `Leetcode` `DFS`
Link: https://leetcode.com/problems/find-closest-node-to-given-two-nodes/description/
## 思路
思路参考[这里](https://leetcode.com/problems/find-closest-node-to-given-two-nodes/solutions/2357694/two-dfs/)
对两个点分别做dfs
找到这两点分别和每个点的距离
然后找到最大距离最小的那个
注意:由于每个点最多只有一个outgoing edge 其实这个图就像是一个linkedlist, current node和next node直接是straightforward的 不需要像之前一样做bfs/dfs
## Code
```java=
class Solution {
public int closestMeetingNode(int[] edges, int node1, int node2) {
int n = edges.length;
int[] dist1 = new int[n];
int[] dist2 = new int[n];
Arrays.fill(dist1, -1);
Arrays.fill(dist2, -1);
dfs(node1, edges, dist1);
dfs(node2, edges, dist2);
int minDist = Integer.MAX_VALUE;
int ans = -1;
for(int i=0; i<n; i++){
if(Math.min(dist1[i], dist2[i])>=0 && Math.max(dist1[i], dist2[i])<minDist){
minDist = Math.max(dist1[i], dist2[i]);
ans = i;
}
}
return ans;
}
public void dfs(int node, int[] edges, int[] memo){
int dist = 0;
while(node!=-1 && memo[node]==-1){
memo[node] = dist++;
node = edges[node];
}
}
}
```