만드는 중입니다

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

코운택트 트레이싱

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

요약
나무 모양으로 연결된 소들과 일정 기간 후 감염된 소의 목록이 주어질 때, 처음에 감염되었을 수 있는 소의 최소 수를 각 기간마다 구합니다.
난이도

보통10점 중 7점

유형
트리, 동적 계획법, DFS
정답자
아직 제출이 없습니다

문제

농부 존은 11번부터 NN번까지 번호가 붙은 NN마리(2≤N≤1052 \le N \le 10^5)의 소를 기르고 있다. 소들 사이의 연결 관계는 트리로 주어진다. 안타깝게도 무리 안에서 질병이 퍼지고 있다.

처음에 일부 소가 감염되어 있다. 매일 밤 감염된 소는 이웃에게 질병을 옮긴다. 한 번 감염된 소는 계속 감염 상태를 유지한다. 몇 밤이 지난 뒤 존은 문제를 알아차리고, 소들을 검사해 누가 질병에 걸렸는지 확인한다.

밤의 수로 [0,N][0, N] 범위의 정수인 서로 다른 QQ개(1≤Q≤201 \le Q \le 20)의 값이 주어진다. 각 밤의 수에 대해, 처음에 감염되어 있었을 수 있는 소의 최소 마릿수를 구하라. 주어진 정보와 밤의 수가 모순되면 불가능하다고 답하라.

입력

첫째 줄에 NN이 주어진다.

다음 줄에는 길이 NN의 비트 문자열이 주어진다. ii번째 비트가 1이면 ii번 소가 감염된 것이고, 0이면 감염되지 않은 것이다. 감염된 소는 적어도 한 마리 있다.

다음 N−1N-1개의 줄에 트리의 간선이 주어진다.

이어서 QQ가 주어지고, 그 뒤에 밤의 수 QQ개가 주어진다.

출력

QQ개의 줄에 각 밤의 수에 대한 답을 출력한다. 불가능한 경우에는 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    5
    11111
    1 2
    2 3
    3 4
    4 5
    6
    5
    4
    3
    2
    1
    0
    
    예상 출력
    1
    1
    1
    1
    2
    5
    
  2. 예제 2

    입력
    10
    1111111111
    1 2
    2 3
    2 4
    2 5
    2 6
    6 7
    7 8
    8 9
    9 10
    11
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    예상 출력
    10
    3
    2
    1
    1
    1
    1
    1
    1
    1
    1
    
  3. 예제 3

    입력
    5
    11100
    1 2
    2 3
    3 4
    4 5
    6
    0
    1
    2
    3
    4
    5
    
    예상 출력
    3
    1
    1
    -1
    -1
    -1