public static int visited_node1 [];
public static int visited_node2 [];
public static int edges[];
public static int answer_node = -1;
public static int answer_distance = 9999999;
public static void process_node1(int node, int distance) {
if(visited_node1[node] != 0) {
return;
}
visited_node1[node] = distance;
if(edges[node] != -1) {
process_node1(edges[node], distance + 1);
}
}
public static void process_node2(int node, int distance) {
if (visited_node2[node] != 0) {
return;
}
visited_node2[node] = distance;
if (visited_node1[node] != 0) {
int max_distance = Math.max(visited_node1[node], visited_node2[node]);
if(max_distance == answer_distance) {
answer_node = Math.min(answer_node, node);
}
else if(max_distance < answer_distance) {
answer_distance = max_distance;
answer_node = node;
}
}
if(edges[node] != -1) {
process_node2(edges[node], distance + 1);
}
}
public int closestMeetingNode(int[] edges, int node1, int node2) {
this.edges = edges;
visited_node1 = new int [edges.length];
visited_node2 = new int [edges.length];
answer_node = -1;
answer_distance = 9999999;
process_node1(node1, 1);
process_node2(node2, 1);
return answer_node;
}
}
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.