트리에서 세 개의 단순 경로가 서로 정점을 공유하지 않거나 세 쌍 모두 교차하는 경우의 수를 세어 10^9+7로 나눈 나머지를 구한다.
어려움9조합론트리DFS수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB노드가 N개인 트리가 주어진다. 서로 다른 두 노드를 잇는 단순 경로의 개수를 M이라고 하면 M=N(N−1)/2이다.
단순 경로 세 개를 순서 없이 고르는 방법은 모두 M(M−1)(M−2)/6가지다. 세 경로 (A,B,C)가 다음 두 조건 중 적어도 하나를 만족하면 좋은 경로의 세 쌍이라고 한다.
트리가 주어졌을 때 좋은 경로의 세 쌍이 몇 개인지 구하는 프로그램을 작성하시오.
첫째 줄에 N (4≤N≤300,000)이 주어진다.
둘째 줄부터 N−1개의 줄에 트리의 간선을 이루는 두 정점의 번호가 주어진다. 정점 번호는 1번부터 N번까지다.
좋은 경로의 세 쌍의 개수를 109+7로 나눈 나머지를 출력한다.
경로를 양 끝 정점으로 적으면, 노드가 4개이고 간선이 1과 2, 2와 3, 3과 4를 잇는 트리에서 좋은 경로의 세 쌍은 다음 16개다.