아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Confuzzle

시간 제한3초메모리 제한1024 MB

요약
각 정점에 값이 적힌 트리에서 같은 값을 가진 두 정점 사이 거리의 최솟값을 구한다.
난이도

보통10점 중 7점

유형
트리, DFS, 동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

NN개의 정점으로 구성된 가중치 없는 트리가 주어진다. 트리 상의 두 정점 사이의 거리는 두 정점 사이의 간선의 개수로 정의한다.

각 정점에는 수가 적혀 있으며, 적어도 두 정점은 같은 값임이 보장된다. 이때, 서로 같은 값이 쓰여 있는 두 정점 쌍 중 가장 거리가 가까울 때의 거리를 구해보자.

입력

첫째 줄에 트리의 정점의 개수 NN이 주어진다. (2≤N≤100 0002 \leq N \leq 100\ 000)

둘째 줄에 각 정점의 고유한 값인 정수 c1,c2,⋯ ,cNc_1, c_2, \cdots, c_N이 주어진다. (1≤ci≤N1 \leq c_i \leq N)

셋째 줄부터 N−1N - 1개 줄에 걸쳐 각 줄마다 트리를 이루는 간선을 나타내는 정수 uu와 vv가 주어진다. 이는 uu번 정점과 vv번 정점을 잇는 간선이 존재함을 의미한다. (1≤u,v≤N1 \leq u, v \leq N, u≠vu \neq v)

출력

서로 같은 값을 갖는 두 정점 쌍 중 가장 거리가 가까울 때의 거리를 출력한다.

예제1

  1. 예제 1

    입력
    7
    1 2 3 1 4 2 2
    1 2
    1 3
    3 4
    3 5
    4 6
    5 7
    
    예상 출력
    2