zoukankan      html  css  js  c++  java
  • A1149 Dangerous Goods Packaging (25分)

    一、技术总结

    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
    ");
    					flag = 0;
    					break;
    				}				
    			}
    			if(flag == 0) break;
    		}
    		if(flag == 1) printf("Yes
    ");
    	}
    	return 0;
    }
    
  • 相关阅读:
    SQL实战(四)
    SQL实战(三)
    SQL实战(二)
    数据库SQL实战(一)
    算法(二)——背包问题
    华为机试(五)
    算法(一)
    华为机试练习(四)
    华为往年机试题目(三)
    T分布(T-Distribution)
  • 原文地址:https://www.cnblogs.com/tsruixi/p/13174318.html
Copyright © 2011-2022 走看看