USACO 2023 December Contest, Platinum, Cowntact Tracing

Xem PDF

Điểm: 1000 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Anh nông dân John có \(N\) con bò được đánh số từ \(1\) đến \(N\) và các mối quan hệ thân thiết của những con bò này được mô tả bởi một cây. Vào một hôm, thật không may khi có một dịch bệnh đang lan truyền khắp nơi quanh đó.

Vào ngày đầu tiên, một số con bò đã bị bệnh. Sau mỗi đêm, mỗi con bò đã bị lây nhiễm sẽ lây bệnh cho các con bò mà chúng thân thiết. Một khi con bò đã bị nhiễm bệnh thì con bò đó sẽ không khỏi bệnh. Sau vài đêm, John đã bắt đầu nhận ra vấn đề, vì vậy anh ấy sẽ kiểm tra những con bò của mình để xem những con nào bị mắc bệnh.

Bạn nhận được \(Q\) giá trị khác nhau mô tả số lượng đêm từ ngày đầu tiên đến ngày John kiểm tra đàn bò, các giá trị đó nằm trong đoạn \([0, N]\). Với mỗi số lượng đêm, hãy tìm số lượng tối thiểu các con bò bị nhiễm bệnh vào ngày đầu tiên, hoặc cho biết số lượng đêm đó không tồn tại so với thông tin mà John kiểm tra từ đàn bò của mình.

Input

  • Dòng thứ nhất chứa một số nguyên \(N\) \((2 \le N \le 10^5)\) mô tả số lượng con bò.
  • Dòng tiếp theo chứa một xâu nhị phân \(S\) độ dài \(N\), với \(S_i\) (\(S_i\) là kí tự thứ \(i\) của xâu \(S\), \(i \in [1, N]\)) là \(1\) nếu con bò thứ \(i\) bị bệnh vào ngày John kiểm tra hoặc \(0\) trong trường hợp ngược lại.
  • \(N - 1\) dòng tiếp theo, mỗi dòng chứa 2 số nguyên \(u, v\) mô tả 2 con bò thứ \(u\)\(v\) quen biết nhau.
  • Dòng tiếp theo gồm số nguyên \(Q\) \((1 \le Q \le 20)\) mô tả số lượng truy vấn.
  • \(Q\) Dòng cuối cùng, dòng thứ \(j\) gồm số nguyên \(x_j\) mô tả số lượng đêm trước ngày John kiểm tra.

Output

  • In ra \(Q\) dòng, dòng thứ \(j\) hãy in ra số lượng con bò bị nhiễm bệnh ở ngày đầu tiên, nếu không có trường hợp nào khả thi, hãy in ra \(-1\).

Scoring

  • Subtask 1: \(N \le 10\).
  • Subtask 2: Tất cả các con bò đều bị lây nhiễm bệnh.
  • Subtask 3: \(N \le 400\).
  • Subtask 4: Không có giới hạn gì thêm.

Example

Test 1

Input
5
11111
1 2
2 3
3 4
4 5
6
5
4
3
2
1
0
Output
1
1
1
1
2
5
Note
  • Với \(4\) truy vấn đầu tiên, đều có khả năng ở ngày đầu tiên con bò thứ \(3\) mắc bệnh.
  • Với truy vấn thứ \(5\) (John kiểm tra đàn bò sau ngày đầu tiên \(1\) đêm), có duy nhất khả năng ngày đầu tiên con bò thứ \(2\)\(4\) mắc bệnh.
  • Với truy vấn thứ \(6\) (John kiểm tra đàn bò sau ngày đầu tiên \(0\) đêm), chỉ có khả năng ngày đầu tiên cả \(5\) con bò đều mắc bệnh.

Test 2

Input
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
Output
10
3
2
1
1
1
1
1
1
1
1
Note
  • Với truy vấn đầu tiên (sau \(0\) đêm), chỉ có khả năng có thể xảy ra ở ngày đầu tiên là cả \(10\) con bò đều mắc bệnh.
  • Với truy vấn thứ hai (sau \(1\) đêm), tồn tại khả năng ở ngày đầu tiên con bò thứ \(2\), \(7\)\(9\) mắc bệnh.
  • Với truy vấn thứ ba (sau \(2\) đêm), tồn tại khả năng ở ngày đầu tiên con bò thứ \(2\)\(9\) bị mắc bệnh.
  • Với tất cả các truy vấn còn lại, tồn tại khả năng ở ngày đầu tiên con bò thứ \(7\) bị mắc bệnh.

Test 3

Input
5
11100
1 2
2 3
3 4
4 5
6
0
1
2
3
4
5
Output
3
1
1
-1
-1
-1
Note
  • Với truy vấn đầu tiên (\(0\) đêm), tồn tại khả năng là bò \(1\), \(2\)\(3\) đã bắt đầu bị bệnh.
  • Với truy vấn thứ hai (\(1\) đêm), tồn tại khả năng là chỉ có bò \(2\) đã bắt đầu bị bệnh.
  • Với truy vấn thứ ba (\(2\) đêm), tồn tại khả năng là chỉ có bò \(1\) đã bắt đầu bị bệnh.
  • Ở các truy vấn còn lại, không tồn tại khả năng nào ở ngày đầu tiên phù hợp với kết quả kiểm tra của John.

Bình luận

Không có bình luận nào.