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

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

청소 로봇

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

요약
트리의 모든 정점을 정점이 겹치지 않는 경로 여러 개로 나누되, 두 경로를 합쳐 더 긴 경로를 만들 수 없도록 하는 분할의 수를 센다.
난이도

어려움10점 중 8점

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

문제

새로 지어진 ICPC 타운에는 N개의 교차점이 있고, 이들은 N − 1개의 도로로 연결되어 있다. 어떤 교차점에서 출발해도 도로를 하나 이상 지나면 다른 모든 교차점에 도달할 수 있다. 모든 교차점을 잘 관리하기 위해 정부 환경청은 최신형 청소 로봇을 배치하려 한다. 각 로봇은 청소 능력 외에도 도로로 연결된 교차점 사이를 이동하는 능력을 갖추고 있다. 그러나 짐작할 수 있듯이 이런 로봇은 값이 싸지 않다. 그래서 환경청은 다음과 같은 배치 계획을 고려하고 있다.

TkT_k를 k번째 로봇이 청소해야 하는 교차점의 집합(로봇의 작업)이라 하고, ∣Tk∣≥1|T_k| \ge 1을 TkT_k에 속한 교차점의 수라 하자. TkT_k의 교차점들은 하나의 경로를 이룬다. 즉, vi∈Tkv_i \in T_k이고 i≠ji \neq j이면 vi≠vjv_i \neq v_j인 수열 v1,v2,…,v∣Tk∣v_1, v_2, \ldots, v_{|T_k|}이 존재해서 이 수열에서 인접한 두 교차점이 도로로 연결되어 있다. 모든 로봇의 TT의 합집합은 ICPC 타운의 모든 교차점의 집합과 같다. 한편, 두 로봇이 같은 교차점을 공유하지는 않는다. 즉, i≠ji \neq j이면 Ti∩Tj=∅T_i \cap T_j = \emptyset이다.

비효율적인 운영에 대한 시민의 불만을 피하기 위해 배치 계획은 기약이어야 한다. 다시 말해, Ti∪TjT_i \cup T_j가 더 긴 경로를 이루는 두 로봇 i, j가 있어서는 안 된다. 환경청은 모든 작업이 기약이기만 하면 사용하는 로봇의 수가 최소인지는 신경 쓰지 않는다. 이 문제에서 여러분의 임무는 타운의 구조가 주어졌을 때 가능한 배치 계획의 수를 세는 것이다. 계획은 위의 모든 조건을 만족할 때에만 가능하다.

예를 들어 N = 6이고 도로가 {(1, 3),(2, 3),(3, 4),(4, 5),(4, 6)}이라 하자. 다음 그림과 같이 가능한 배치 계획은 5가지이다.

  • 첫 번째 계획은 2대의 로봇(그림에서 A, B)으로 {1, 2, 3}과 {4, 5, 6}을 청소한다.
  • 두 번째 계획은 3대의 로봇(그림에서 A, B, C)으로 {1, 3, 4, 6}, {2}, {5}를 청소한다.
  • 세 번째 계획은 3대의 로봇으로 {1, 3, 4, 5}, {2}, {6}을 청소한다.
  • 네 번째 계획은 3대의 로봇으로 {1}, {2, 3, 4, 6}, {5}를 청소한다.
  • 다섯 번째 계획은 3대의 로봇으로 {1}, {2, 3, 4, 5}, {6}을 청소한다.

이 경우에 다른 계획은 가능하지 않다. 예를 들어 계획 {{1, 3}, {2}, {4, 5, 6}}은 작업 {1, 3}과 {2}를 더 긴 경로 {1, 3, 2}로 합칠 수 있으므로 가능하지 않다. 계획 {{1, 2, 3, 4}, {5}, {6}}도 {1, 2, 3, 4}가 경로가 아니므로 가능하지 않다.

입력

입력의 첫 줄에는 교차점의 수를 나타내는 정수 N (1 ≤ N ≤ 100 000)이 주어진다. 다음 N − 1개 줄에는 각각 교차점 uiu_i와 교차점 viv_i를 연결하는 도로를 나타내는 두 정수 uiu_i viv_i (1 ≤ uiu_i < viv_i ≤ N)가 주어진다. 어떤 교차점에서 출발해도 도로를 하나 이상 지나면 다른 모든 교차점에 도달할 수 있음이 보장된다.

출력

가능한 배치 계획의 수를 한 줄에 정수로 출력한다. 이 값은 클 수 있으므로 1 000 000 007로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

    입력
    6
    1 3
    2 3
    3 4
    4 5
    4 6
    
    예상 출력
    5
    
  2. 예제 2

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