연휴
시간 제한2초메모리 제한512 MB
트리에서 M개의 가족이 각자 다른 N-1개 도시 중 하나를 균등하고 독립적으로 고를 때, 모든 가족이 지나는 도로 수의 기댓값을 구한다.
문제
개의 도시와 개의 도로로 이루어진 나라가 있다. 도시에는 번부터 번까지 번호가 붙어 있고, 모든 도로는 양방향이며 서로 다른 두 도시를 잇는다.
단순 경로는 도시를 두 개 이상 나열한 수열로, 같은 도시가 두 번 나오지 않고 이웃한 두 도시 사이에는 항상 도로가 있다. 이 나라의 어떤 두 도시 사이에도 단순 경로가 존재한다. 즉, 도로망은 트리다.
이 나라에는 가족이 개 산다. 가족에는 번부터 번까지 번호가 붙어 있고, 각 가족은 도시 하나에 산다. 한 도시에 여러 가족이 살아도 된다.
연휴를 맞아 모든 가족이 떠날 도시를 하나씩 골랐다. 고른 도시는 지금 사는 도시와 다르고, 나머지 개의 도시를 고를 확률은 모두 같다. 도시 선택은 가족마다 독립이다. 연휴 동안 각 가족은 사는 도시에서 고른 도시까지 단순 경로를 따라 이동한다.
가족이 무엇을 골랐는지에 따라 모든 가족이 함께 지나는 도로가 생기기도 한다. 그런 도로의 개수를 이라고 하자. 의 기댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 도시의 수 과 가족의 수 이 주어진다. (, )
다음 개의 줄에는 도로가 잇는 두 도시의 번호가 주어진다. 주어지는 도로는 항상 트리를 이룬다.
마지막 줄에는 각 가족이 사는 도시의 번호가 개 주어진다.
출력
첫째 줄에 의 기댓값을 소수점 아래 아홉째 자리까지 반올림해서 출력한다. 소수점 아래는 항상 아홉 자리를 모두 채워 쓴다. 기댓값이 정확히 이면 1.500000000을 출력한다.
입력은 기댓값이 소수점 아래 아홉째 자리의 반올림 경계에 놓이지 않도록 주어지므로, 배정밀도 실수로 계산해도 출력이 갈리지 않는다.
설명
도시 셋이 번, 번, 번 순서로 이어져 있고 가족이 하나뿐이며 번 도시에 산다고 하자. 이 가족은 확률 로 번 도시를 골라 도로 하나를 지나고, 확률 로 번 도시를 골라 도로 둘을 지난다. 가족이 하나뿐이므로 이 가족이 지나는 도로가 곧 모든 가족이 지나는 도로다. 따라서 기댓값은 이다.
같은 나라에 가족이 둘 있고 둘 다 번 도시에 산다면, 두 가족이 모두 번 도시를 고를 확률이 이고 이때 다. 나머지 경우에는 이므로 기댓값은 이다.