만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

트리와 소수

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

요약
정점 N개짜리 트리에서 서로 다른 두 정점을 균일하게 무작위로 고를 때, 두 정점 사이 거리가 소수일 확률을 구한다.
난이도

보통10점 중 7점

유형
트리, DFS, 정수론, 분할 정복
정답자
아직 제출이 없습니다

문제

NN개의 정점으로 이루어진 트리가 주어진다. 정점에는 1번부터 NN번까지 번호가 붙어 있다. 두 정점 사이의 거리는 두 정점을 잇는 경로에 놓인 간선의 개수다.

서로 다른 두 정점을 균일한 확률로 고른다. 즉 서로 다른 두 정점으로 이루어진 (N2)\binom{N}{2}개의 쌍 중 하나가 같은 확률로 뽑힌다. 이때 고른 두 정점 사이의 거리가 소수일 확률을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정점의 개수 NN이 주어진다. (2≤N≤500002 \le N \le 50000)

다음 N−1N-1개 줄에는 간선으로 이어진 두 정점의 번호 uu와 vv가 공백을 사이에 두고 주어진다. (1≤u,v≤N1 \le u, v \le N, u≠vu \ne v)

주어지는 그래프는 항상 트리다.

출력

고른 두 정점 사이의 거리가 소수일 확률을 소수점 아래 열째 자리까지 출력한다. 소수점 아래 열한째 자리에서 반올림하고, 끝에 오는 0도 생략하지 않는다. 예를 들어 확률이 정확히 12\frac{1}{2}이면 0.5000000000을 출력한다.

예제5

  1. 예제 1

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

    입력
    2
    1 2
    
    예상 출력
    0.0000000000
    
  3. 예제 3

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

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

    입력
    10
    10 8
    10 2
    8 9
    8 6
    8 4
    6 5
    5 1
    1 3
    8 7
    
    예상 출력
    0.6444444444