A1149
Description:
给出几组不可混搭的ID,判断每个购物序列是否安全(无不可混搭组),安全输出Yes,否则No;
思路:
ID是5位数,开二维数组会爆内存,第一次想到构造哈希值,前五位为第一个物质ID,后五位为第二个物质ID,但是这样只能对购物序列二重循环,超时了一组;然后考虑用map映射一对不可混搭,没意识到map不能重复映射,浪费了好多时间Debug,后来意识到了改成int映射vector,问题解决。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<unordered_map>
#include<set>
#include<vector>
#include<queue>
using namespace std
;
int m
, n
;
unordered_map
<int, vector
<int>>in
;
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif
scanf("%d%d", &n
, &m
);
int u
, v
;
while(n
--){
scanf("%d%d", &u
, &v
);
in
[u
].push_back(v
);
in
[v
].push_back(u
);
}
int k
, t
;
bool flag
;
while(m
--){
bool a
[100000] = {0};
flag
= true;
scanf("%d", &k
);
while(k
--){
scanf("%d", &t
);
a
[t
] = true;
for(int i
= 0; i
< in
[t
].size(); i
++)
if(a
[in
[t
][i
]]){
flag
= false;
break;
}
}
if(flag
) printf("Yes\n");
else printf("No\n");
}
return 0;
}