第十八天PAT-A1149 Dangerous Goods PackagingSTL应用模拟

tech2022-08-11  149

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; //映射ID对应的不可混搭序列 int main() { #ifdef ONLINE_JUDGE #else freopen("1.txt", "r", stdin); #endif // ONLINE_JUDGE 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; //对于t的每个不可混搭对象,查找其是否在当前清单中 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; }
最新回复(0)