PAT甲组1149 Dangerous Goods Packaging思路解析和代码

编程入门 行业动态 更新时间:2024-10-06 14:36:42

PAT<a href=https://www.elefans.com/category/jswz/47e1dee37e6db3d31f509335699c938e.html style=甲组1149 Dangerous Goods Packaging思路解析和代码"/>

PAT甲组1149 Dangerous Goods Packaging思路解析和代码

A1149

题目链接

个人思路

题意

给出一批货物,判断这批货物中是否都能共存

思路

用二维vector存储每个货物与其不能共存的物品,暴力遍历即可通过

注意

  • 一种货物可能有多个不能共存的物品,因此不能单纯的使用map
  • 1e6数据范围的二维vector也没有超限,看来vector的潜力很大

个人思路代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int N, M;
vector<int> v[maxn];
unordered_map<int, bool> vis;
int main(int argc, char *argv[]) {scanf("%d%d", &N, &M);for(int i = 0; i < N; ++i){int a, b;scanf("%d%d", &a, &b);v[a].push_back(b);}vector<int> goods;while(M--){int K;scanf("%d", &K);goods.clear();vis.clear();bool cmplt = true;for(int i = 0; i < K; ++i){int x;scanf("%d", &x);goods.push_back(x);vis[x] = true;}for(int i = 0; i < goods.size(); ++i){if(cmplt == false)break;int a = goods[i];if(v[a].size() == 0)continue;else{for(int j = 0; j < v[a].size(); ++j){int b = v[a][j];if(cmplt == false)break;if(vis[b] == true)cmplt = false;}}}if(cmplt == false)printf("No\n");elseprintf("Yes\n");}return 0;
}

更多推荐

PAT甲组1149 Dangerous Goods Packaging思路解析和代码

本文发布于:2024-03-13 14:40:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1734198.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:甲组   思路   代码   PAT   Packaging

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!