2359. 找到离给定两个节点最近的节点
2359. 找到离给定两个节点最近的节点
题目链接:2359. 找到离给定两个节点最近的节点
代码如下:
class Solution {
public:int closestMeetingNode(vector<int>& edges, int node1, int node2) {auto calc_dis = [&](int x) {vector<int> dis(edges.size(), edges.size());//初始化为边的个数,表示无法到达或者尚未访问的节点//从x触发,知道无路可走(x=-1)或者重复访问节点(dis[x]<n)for (int d = 0;x >= 0 && dis[x] == edges.size();x = edges[x]) {dis[x] = d++;}return dis;};vector<int> dis1 = calc_dis(node1);vector<int> dis2 = calc_dis(node2);int min_dis = edges.size(), res = -1;for (int i = 0;i < edges.size();i++) {int d = max(dis1[i], dis2[i]);if (d < min_dis) {min_dis = d;res = i;}}return res;}
};