좋은 경로의 세 쌍
시간 제한2초메모리 제한512 MB
트리에서 세 개의 단순 경로가 서로 정점을 공유하지 않거나 세 쌍 모두 교차하는 경우의 수를 세어 10^9+7로 나눈 나머지를 구한다.
문제
노드가 개인 트리가 주어진다. 서로 다른 두 노드를 잇는 단순 경로의 개수를 이라고 하면 이다.
단순 경로 세 개를 순서 없이 고르는 방법은 모두 가지다. 세 경로 가 다음 두 조건 중 적어도 하나를 만족하면 좋은 경로의 세 쌍이라고 한다.
- 세 경로 , , 가 모두 서로 다른 노드로 이루어져 있다. 즉 어느 두 경로도 노드를 공유하지 않는다.
- 세 경로가 모두 교차한다. 즉 와 가 노드를 적어도 하나 공유하고, 와 도, 와 도 노드를 적어도 하나 공유한다.
트리가 주어졌을 때 좋은 경로의 세 쌍이 몇 개인지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 ()이 주어진다.
둘째 줄부터 개의 줄에 트리의 간선을 이루는 두 정점의 번호가 주어진다. 정점 번호는 번부터 번까지다.
출력
좋은 경로의 세 쌍의 개수를 로 나눈 나머지를 출력한다.
설명
경로를 양 끝 정점으로 적으면, 노드가 개이고 간선이 과 , 와 , 과 를 잇는 트리에서 좋은 경로의 세 쌍은 다음 개다.
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,
- , ,