При перевозке грузов в контейнерах, мы должны быть осторожны, чтобы не упаковать некоторые несовместимые товары в том же контейнере, или мы могли бы получить себе серьезные неприятности. Например, окислитель (氧化剂) не должны быть упакованы с горючей жидкостью (易燃 液体), или это может привести к взрыву.
Теперь вы получаете длинный список несовместимых товаров, а также несколько списков товаров к отгрузке. Вы должны сказать, если все товары в списке могут быть упакованы в том же контейнере.
Входные характеристики:
Каждый входной файл содержит один тест. Для каждого случая, первая линия дает два положительных целых числа: N ( ≤), количество пар несовместимых товаров и M ( ≤), количество списков товаров к отгрузке.
Затем два блока следует. Первый блок содержит N пар несовместимых товаров, каждая пара занимает линию; а второй содержит один M списков товаров, которые будут отправлены, каждый список занимает строку в следующем формате:
K G[1] G[2] ... G[K]
где K
( ≤) это количество товаров и G[i]
х годов являются идентификаторы товаров. Чтобы сделать это просто, каждый хорошо представлен 5-значный идентификационный номер. Все числа в строке разделены пробелами.
Выходные характеристики:
Для каждого списка доставки, печати в строке , Yes
если нет несовместимых товаров в списке, или No
если нет.
Пример ввода:
6 3
20001 20002
20003 20004
20005 20006
20003 20001
20005 20004
20004 20006
4 00001 20004 00002 20003
5 98823 20002 20003 20006 10010
3 12345 67890 23333
Пример вывода:
No
Yes
Yes
Soulution:
Прямая сумма выглядеть то же самое решение спаренные темы:
Кто вам сказал, две пары, а затем указать число столбцов, а затем определить, есть ли что-нибудь спаривание! !
Если небольшое количество ступеней, матрица непосредственно, v [а] [б] является правом, то итерация число столбцов, одна пара взгляда существует или нет
Обычно порядка больше
Использование unordered_map <Int, вектор <Int >> карту хранения каждого номера супруга
Затем маркировки первой серии чисел, которые проходят цифровое присутствие Его Int [10000] = {FALSE}; V [XXX] = TRUE;
А затем итерация по числу столбцов для каждого счета, чтобы определить все его супруга не число столбцов, а именно, v [х] == верно?
1 #include <iostream> 2 #include <вектор> 3 # include <unordered_map> 4 с использованием пространства имен STD; 5 INT основных () 6 { 7 INT п, т, к, а, б; 8 CIN >> п >> м; 9 unordered_map < ИНТ , вектор < INT >> thePair; 10 для ( Int I = 0 ; я <п; ++ я) 11 { 12 CIN >> A >> б; 13 thePair [а] .push_back (б); 14 thePair [Ь] .push_back (а); 15 } 16 в то время (m-- ) 17 { 18 CIN >> к; 19 вектор < INT > Темп (к); 20 unordered_map < INT , BOOL > НУМС; 21 BOOL флаг = верно ; 22 для ( Int I = 0 ; я <к; ++ я) 23 { 24 CIN >> Темп [I]; 25 НУМС [Темп [я]] = верно ; 26 } 27 для ( Int I = 0 ; я <к && флаг; ++ я) 28 для (авто: с thePair [температуры [I]]) 29 , если (НУМС [а] == истинные ) 30 флаг = ложь ; 31 соиЬ << (? Флаг " Да " : " Нет " ) << епсИ; 32 } 33 возврата 0 ; 34 }