写在前面
- 思路分析
-
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;
}