Сборка диагностической сети
Просмотр в формате PDFВ автосервисе хотят построить внутреннюю диагностическую сеть из n + 1 постов обслуживания.
Для этого подготовили n кабелей, и для каждого кабеля известна его длина.
Нужно соединить все посты так, чтобы:
- каждый кабель был использован ровно один раз;
- любые два поста были связаны по сети;
- в сети не было циклов.
Иными словами, необходимо собрать дерево из n + 1 вершин и n рёбер.
Инженеры автосервиса хотят, чтобы максимальное расстояние между двумя постами по суммарной длине кабелей было ровно d.
Для каждого набора кабелей определите, можно ли собрать такую сеть.
Входные данные
В первой строке записано число t — количество наборов данных.
Каждый набор данных состоит из двух строк:
- в первой строке находятся два целых числа
nиd— количество кабелей и требуемый диаметр сети; - во второй строке находятся
nцелых чиселl1, l2, ..., ln, гдеli— длинаi-го кабеля.
Выходные данные
Для каждого набора данных выведите:
Yes, если можно собрать дерево с диаметром ровноd;Noв противном случае.
Ограничения
1 ≤ t ≤ 10001 ≤ n ≤ 20001 ≤ d ≤ 20001 ≤ li ≤ 2000- сумма значений
nпо всем наборам данных не превышает2000
Пример
Входные данные
3
3 6
1 2 3
4 7
1 1 2 4
4 5
2 2 2 2
Выходные данные
Yes
Yes
No
Пояснение
В первом наборе можно соединить посты в одну цепочку с длинами кабелей 1, 2 и 3. Тогда диаметр сети будет равен 6.
Во втором наборе можно построить сеть так, чтобы максимальное расстояние между двумя постами оказалось ровно 7.
В третьем наборе из четырёх кабелей длины 2 невозможно собрать дерево, у которого диаметр был бы ровно 5.
Комментарии