정현이가 살고 있는 나라에는 각 지역을 연결하는 도로망이 있다. 도로망은 총 N개의 지점과 두 지점을 연결하는 N−1개의 양방향 도로로 구성되어 있으며, 모든 두 지점 사이를 도로망으로 이동할 수 있다. 그리고 한 지점에는 도로망을 이용하고 있는 차량이 최대 1대 존재할 수 있다.
추석 연휴가 끝나고 수많은 차량들이 도로망을 통해 집으로 돌아가고 있다. 1번 지점에는 도로망을 빠져나가 집으로 갈 수 있는 톨게이트가 존재하고, 모든 차량들은 도로망을 빠져나가기 위해 1번 지점으로 향하고 있다.
1분이 지날 때마다 각 차량은 아래 세 가지 행동 중 하나를 한다.
도로망에 차량이 많아지면서 교통체증이 극심해지고 있다. 귀경길 도로 위에서 몇시간째 갇혀있는 정현이는 차량들이 최적으로 움직일 때, 모든 차량이 도로망을 빠져나가는데 몇 분이 소요될지 궁금해졌다.
도로망의 구성과 0분에 존재하는 차량들의 위치가 주어졌을 때, 정현이의 의문을 해결해주는 프로그램을 작성해보자.
첫째 줄에 도로망에 존재하는 지점의 수 N이 주어진다. (1≤N≤200,000)
둘째 줄부터 N−1줄에 걸쳐, 도로망의 두 지점을 연결하는 도로 정보 (u_i,v_i)가 한 줄씩 주어진다. 이는 u_i번 지점과 v_i번 지점을 연결하는 도로가 존재한다는 것이다. (1≤u_i≤N,1≤v_i≤N,u_i=v_i)
N+1번째 줄에 1번 지점부터 N번 지점까지 그 지점에 차량이 존재하는지 여부를 나타내는 정수 C_i가 공백으로 나뉘어 주어진다. i번 지점에 차량이 존재한다면 C_i는 1이고, 그렇지 않다면 0이다.
도로망에는 차량이 적어도 한 대 이상 존재함이 보장된다.
첫째 줄에 차량들이 최적으로 행동할 때 모든 차량이 도로망을 빠져나가는데 걸리는 시간을 출력한다.