만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

트리 읽기

면접 대비

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

요약
각 정점에 1부터 9까지의 숫자가 적힌 트리에서 모든 정점 쌍 (a, b)의 경로를 따라 읽은 수를 구해 더하고, 그 합을 1,000,000,007로 나눈 나머지를 구합니다.
난이도

보통10점 중 6점

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

문제

정점이 VV개인 트리가 주어진다. 정점에는 11번부터 VV번까지 번호가 붙어 있다. ii번 정점에는 11부터 99까지의 숫자 중 하나인 SiS_i가 적혀 있다.

트리의 aa번 정점과 bb번 정점에 대해, aa번 정점에서 bb번 정점까지의 최단 경로에 포함된 정점들의 숫자를 경로 순서대로 이어 붙인 10진법 정수를 f(a,b)f(a, b)라고 하자. 예를 들어 11, 22, 33번 정점에 적힌 수가 각각 33, 44, 11이고, 11번 정점에서 22번 정점으로 가는 최단 경로가 1→3→21 \rightarrow 3 \rightarrow 2이면, f(1,2)=314f(1, 2) = 314이다.

가능한 모든 정수 쌍 (a,b)(a, b) (1≤a,b≤V1 \le a, b \le V)에 대해 f(a,b)f(a, b)를 모두 더한 값을 1 000 000 0071\,000\,000\,007로 나눈 나머지를 구하라.

입력

첫 번째 줄에 VV가 주어진다. (1≤V≤200 0001 \le V \le 200\,000)

두 번째 줄에 S1,⋯ ,SVS_1, \cdots, S_V가 공백으로 구분되어 주어진다. (1≤Si≤91 \le S_i \le 9)

세 번째 줄부터 V−1V-1개의 줄에 걸쳐 트리의 각 간선이 잇는 두 정점의 번호 xx, yy가 공백으로 구분되어 주어진다. (1≤x,y≤V1 \le x, y \le V)

입력으로 주어지는 모든 수는 정수이다.

출력

첫 번째 줄에 답을 출력한다.

예제1

  1. 예제 1

    입력
    5
    3 1 4 1 5
    1 2
    1 3
    2 4
    2 5
    
    예상 출력
    17560