코운택트 트레이싱
시간 제한2초메모리 제한1024 MB
나무 모양으로 연결된 소들과 일정 기간 후 감염된 소의 목록이 주어질 때, 처음에 감염되었을 수 있는 소의 최소 수를 각 기간마다 구합니다.
문제
농부 존은 번부터 번까지 번호가 붙은 마리()의 소를 기르고 있다. 소들 사이의 연결 관계는 트리로 주어진다. 안타깝게도 무리 안에서 질병이 퍼지고 있다.
처음에 일부 소가 감염되어 있다. 매일 밤 감염된 소는 이웃에게 질병을 옮긴다. 한 번 감염된 소는 계속 감염 상태를 유지한다. 몇 밤이 지난 뒤 존은 문제를 알아차리고, 소들을 검사해 누가 질병에 걸렸는지 확인한다.
밤의 수로 범위의 정수인 서로 다른 개()의 값이 주어진다. 각 밤의 수에 대해, 처음에 감염되어 있었을 수 있는 소의 최소 마릿수를 구하라. 주어진 정보와 밤의 수가 모순되면 불가능하다고 답하라.
입력
첫째 줄에 이 주어진다.
다음 줄에는 길이 의 비트 문자열이 주어진다. 번째 비트가 1이면 번 소가 감염된 것이고, 0이면 감염되지 않은 것이다. 감염된 소는 적어도 한 마리 있다.
다음 개의 줄에 트리의 간선이 주어진다.
이어서 가 주어지고, 그 뒤에 밤의 수 개가 주어진다.
출력
개의 줄에 각 밤의 수에 대한 답을 출력한다. 불가능한 경우에는 을 출력한다.