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

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

좋은 경로의 세 쌍

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

요약
트리에서 세 개의 단순 경로가 서로 정점을 공유하지 않거나 세 쌍 모두 교차하는 경우의 수를 세어 10^9+7로 나눈 나머지를 구한다.
난이도

어려움10점 중 9점

유형
조합론, 트리, DFS, 수학
정답자
아직 제출이 없습니다

문제

노드가 NN개인 트리가 주어진다. 서로 다른 두 노드를 잇는 단순 경로의 개수를 MM이라고 하면 M=N(N−1)/2M = N(N-1)/2이다.

단순 경로 세 개를 순서 없이 고르는 방법은 모두 M(M−1)(M−2)/6M(M-1)(M-2)/6가지다. 세 경로 (A,B,C)(A, B, C)가 다음 두 조건 중 적어도 하나를 만족하면 좋은 경로의 세 쌍이라고 한다.

  • 세 경로 AA, BB, CC가 모두 서로 다른 노드로 이루어져 있다. 즉 어느 두 경로도 노드를 공유하지 않는다.
  • 세 경로가 모두 교차한다. 즉 AA와 BB가 노드를 적어도 하나 공유하고, AA와 CC도, BB와 CC도 노드를 적어도 하나 공유한다.

트리가 주어졌을 때 좋은 경로의 세 쌍이 몇 개인지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NN (4≤N≤300,0004 \le N \le 300{,}000)이 주어진다.

둘째 줄부터 N−1N-1개의 줄에 트리의 간선을 이루는 두 정점의 번호가 주어진다. 정점 번호는 11번부터 NN번까지다.

출력

좋은 경로의 세 쌍의 개수를 109+710^9+7로 나눈 나머지를 출력한다.

설명

경로를 양 끝 정점으로 적으면, 노드가 44개이고 간선이 11과 22, 22와 33, 33과 44를 잇는 트리에서 좋은 경로의 세 쌍은 다음 1616개다.

  • (1,2)(1, 2), (1,3)(1, 3), (1,4)(1, 4)
  • (1,2)(1, 2), (1,3)(1, 3), (2,3)(2, 3)
  • (1,2)(1, 2), (1,3)(1, 3), (2,4)(2, 4)
  • (1,2)(1, 2), (1,4)(1, 4), (2,3)(2, 3)
  • (1,2)(1, 2), (1,4)(1, 4), (2,4)(2, 4)
  • (1,2)(1, 2), (2,3)(2, 3), (2,4)(2, 4)
  • (1,3)(1, 3), (1,4)(1, 4), (2,3)(2, 3)
  • (1,3)(1, 3), (1,4)(1, 4), (2,4)(2, 4)
  • (1,3)(1, 3), (1,4)(1, 4), (3,4)(3, 4)
  • (1,3)(1, 3), (2,3)(2, 3), (2,4)(2, 4)
  • (1,3)(1, 3), (2,3)(2, 3), (3,4)(3, 4)
  • (1,3)(1, 3), (2,4)(2, 4), (3,4)(3, 4)
  • (1,4)(1, 4), (2,3)(2, 3), (2,4)(2, 4)
  • (1,4)(1, 4), (2,3)(2, 3), (3,4)(3, 4)
  • (1,4)(1, 4), (2,4)(2, 4), (3,4)(3, 4)
  • (2,3)(2, 3), (2,4)(2, 4), (3,4)(3, 4)

예제2

  1. 예제 1

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

    입력
    13
    1 2
    1 3
    1 4
    2 5
    2 6
    3 7
    4 8
    7 9
    9 10
    10 11
    11 12
    12 13
    
    예상 출력
    43484