码迷,mamicode.com
首页 > 其他好文 > 详细

A1149 Dangerous Goods Packaging (25分)

时间:2020-06-21 23:21:24      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:back   std   names   行存储   code   cto   insert   printf   大致   

一、技术总结

  1. 这一题样例也要看清楚,不然想当然也会出错。
  2. 是直接使用map<int, int>进行数据存储也就是映射,以为是一对一的关系,其实发现是多对多的关系;可以使用map<int, vector> mp,进行存储;
  3. 思路大致是首先使用mp存储好对应关系,然后再使用vector存储要运输的货物,遍历,然后看其对应关系中是否存在要运输的货物中,这里使用set进行解决,也就是在使用vector进行存储时,也在set中存储。

二、参考代码

#include<iostream>
#include<set>
#include<map>
#include<vector>
using namespace std;
vector<int> all[100010];
int main(){
	int n, m, a, b;
	scanf("%d%d", &n, &m);
	map<int, int> mp;
	for(int i = 0; i < n; i++){
		scanf("%d%d", &a, &b);
		all[a].push_back(b);
		all[b].push_back(a);
	}
	int k;
	for(int i = 0; i < m; i++){
		scanf("%d", &k);
		vector<int> v(k);
		set<int> s;
		for(int j = 0; j < k; j++){
			scanf("%d", &v[j]);
			s.insert(v[j]);			
		}
		int flag = 1;
		for(int j = 0; j < k; j++){
			for(int p = 0; p < all[v[j]].size(); p++){
				if(s.find(all[v[j]][p]) != s.end()){
					printf("No\n");
					flag = 0;
					break;
				}				
			}
			if(flag == 0) break;
		}
		if(flag == 1) printf("Yes\n");
	}
	return 0;
}

A1149 Dangerous Goods Packaging (25分)

标签:back   std   names   行存储   code   cto   insert   printf   大致   

原文地址:https://www.cnblogs.com/tsruixi/p/13174318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!