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

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

트리 경로의 서로 다른 가중치 개수

시간 제한2초메모리 제한512 MB

난이도

아직 분류되지 않았습니다

정답자
아직 제출이 없습니다

문제

정점이 NN개인 트리가 있다. 트리는 사이클이 없는 연결 무방향 그래프다. 정점에는 1번부터 NN번까지, 간선에는 1번부터 N−1N-1번까지 번호가 매겨져 있다. 각 정점에는 가중치가 하나씩 붙어 있다.

다음 쿼리를 처리하는 프로그램을 작성하시오.

  • u v: uu번 정점에서 vv번 정점으로 가는 경로 위에 놓인 정점의 가중치 중 서로 다른 값이 몇 개인지 출력한다. 경로에는 양 끝 정점인 uu와 vv도 포함된다.

입력

첫째 줄에 정점의 개수 NN이 주어진다. (2≤N≤1000002 \le N \le 100000)

둘째 줄에 1번 정점부터 NN번 정점까지의 가중치가 순서대로 주어진다. 가중치는 10000001000000 이하의 자연수다.

셋째 줄부터 N−1N-1개의 줄에는 ii번 간선이 잇는 두 정점의 번호 uu와 vv가 주어진다. 주어지는 간선은 항상 하나의 트리를 이룬다.

다음 줄에 쿼리의 개수 MM이 주어진다. (1≤M≤1000001 \le M \le 100000)

이어지는 MM개의 줄에 쿼리가 한 줄에 하나씩 u v 형식으로 주어진다. uu와 vv는 모두 1 이상 NN 이하이고, 두 값이 같은 쿼리도 주어진다.

출력

각 쿼리의 결과를 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.

예제3

  1. 예제 1

    입력
    8
    105 2 9 3 8 5 7 7
    1 2
    1 3
    1 4
    3 5
    3 6
    3 7
    4 8
    2
    2 5
    7 8
    
    예상 출력
    4
    4
    
  2. 예제 2

    입력
    2
    7 7
    1 2
    4
    1 1
    2 2
    1 2
    2 1
    
    예상 출력
    1
    1
    1
    1
    
  3. 예제 3

    입력
    10
    10 20 30 40 50 60 70 80 90 100
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7
    7 8
    8 9
    9 10
    5
    1 10
    5 5
    4 7
    10 1
    2 9
    
    예상 출력
    10
    1
    4
    10
    8