간선 방향 정하기

트리의 각 간선을 방향을 정해, 주어진 모든 정점 쌍 사이에 한 방향으로든 경로가 존재하도록 하는 경우의 수를 10^9+7로 나눈 나머지로 구한다.

어려움8트리DFS동적 계획법조합론아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

노드 NN개로 이루어진 트리가 주어진다. 각 노드에는 11부터 NN까지 서로 다른 번호가 붙어 있다. 여기에 더해 트리의 노드 쌍 MM(a1,b1),(a2,b2),,(aM,bM)(a_1, b_1), (a_2, b_2), \dots, (a_M, b_M)이 주어진다.

트리의 간선마다 방향을 하나씩 정하려고 한다. 주어진 노드 쌍 (ai,bi)(a_i, b_i)마다 aia_i에서 bib_i로 가는 경로가 있거나 bib_i에서 aia_i로 가는 경로가 있어야 한다. 이런 방향 배정이 모두 몇 가지인지 구하라. 답이 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 구한다.

트리는 노드 NN개와 간선 N1N - 1개로 이루어진 그래프이며, 어느 노드에서 다른 어느 노드로도 경로가 있다.

입력

첫째 줄에 트리의 노드 수 NN과 주어지는 노드 쌍의 수 MM이 주어진다 (1N,M3×1051 \le N, M \le 3 \times 10^5).

다음 N1N - 1개 줄에는 간선으로 이어진 두 노드의 번호가 주어진다.

그다음 MM개 줄 중 ii번째 줄에는 ii번째 노드 쌍을 이루는 서로 다른 두 양의 정수 aia_ibib_i가 주어진다. 노드 쌍은 모두 서로 다르다.

출력

조건을 만족하도록 트리의 간선에 방향을 정하는 경우의 수를 109+710^9 + 7로 나눈 나머지를 한 줄에 출력한다.