0
点赞
收藏
分享

微信扫一扫

A1149 Dangerous Goods Packaging (25 分| STL,附详细注释,逻辑分析)


写在前面

  • 思路分析
  • ​unordered_map<int,vector<int>>​​存储每1个货物的所有不兼容货物
  • 判断给出1堆货物是否相容
  • 判断任1货物不兼容货物是否在这堆货物中
  • 存在,则这堆货物不能相容
  • 遍历完所有的货物,找不到不兼容货物,则这堆货物兼容
  • 问题点
  • ​5-digit ID number​
  • ​vector<int>​​封装当前待检测货物
  • 双层循环遍历货物是否兼容
  • 重复定义局部变量无影响
  • 题目一定难度,35分钟a题
  • 2刷

测试用例

input:
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

output:

ac代码

  • ​​参考链接​​

#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main()
{
int n, m;
scanf("%d%d", &n, &m);

unordered_map<int, vector<int>> pairs;
int pa, pb;
for(int i=0; i<n; i++)
{
scanf("%d %d", &pa, &pb);
pairs[pa].push_back(pb);
pairs[pb].push_back(pa);
}

int k, tid;
for(int i=0; i<m; i++)
{
scanf("%d", &k);
int flag = 0, inxs[100010] = {0};
vector<int> cur_in(k);
for(int i=0; i<k; i++)
{
scanf("%d", &cur_in[i]);
inxs[cur_in[i]] = 1;
}

for(int j=0; j<cur_in.size(); j++)
for(int l=0; l<pairs[cur_in[j]].size(); l++)
if(inxs[pairs[cur_in[j]][l]]==1)
flag = 1;
printf("%s\n", flag ? "No" : "Yes");
}
return 0;
}


举报

相关推荐

0 条评论