만드는 중입니다

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

헛간 색칠하기

면접 대비

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

요약
일부 정점의 색이 미리 정해진 트리에서 인접한 두 정점이 다른 색이 되도록 3가지 색으로 칠하는 경우의 수를 10^9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

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

문제

농부 존의 농장에는 헛간이 NN개 있다 (1≤N≤1051 \le N \le 10^5). 그중 일부는 이미 칠해져 있고 나머지는 아직 칠하지 않았다. 존은 남은 헛간을 모두 칠해서 농장의 헛간이 전부 색을 갖게 하려고 하는데, 쓸 수 있는 페인트는 세 가지 색뿐이다. 게다가 존이 아끼는 소 베시는 통로로 바로 이어진 두 헛간의 색이 같으면 헷갈려 하므로, 그런 상황이 생기지 않게 해야 한다.

NN개의 헛간을 잇는 통로에는 사이클이 없다. 즉 어떤 두 헛간을 잡아도 한쪽에서 다른 쪽으로 가는 통로의 순서는 많아야 한 가지다.

아직 칠하지 않은 헛간을 칠하는 방법은 몇 가지인가?

입력

첫째 줄에 헛간의 수 NN과 이미 칠해진 헛간의 수 KK가 주어진다 (0≤K≤N0 \le K \le N).

다음 N−1N-1개 줄에는 헛간 xx와 헛간 yy를 바로 잇는 통로를 나타내는 두 정수 xx, yy가 주어진다 (1≤x,y≤N1 \le x, y \le N, x≠yx \neq y).

다음 KK개 줄에는 헛간 bb가 색 cc로 칠해져 있다는 뜻의 두 정수 bb, cc가 주어진다 (1≤b≤N1 \le b \le N, 1≤c≤31 \le c \le 3). 같은 헛간 번호는 두 번 이상 나오지 않는다.

출력

바로 이어진 두 헛간의 색이 서로 다르도록 남은 헛간을 칠하는 방법의 수를 109+710^9 + 7로 나눈 나머지를 출력한다.

예제4

  1. 예제 1

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

    입력
    1 0
    
    예상 출력
    3
    
  3. 예제 3

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

    입력
    2 0
    1 2
    
    예상 출력
    6