• pat advanced 1139. First Contact (30)


    题目链接

    1. 解法暴力
    2. 因为有 0000, -0000 这样的数据,所以用字符串处理
    3. 同性的时候,遍历好朋友时会直接遍历到对方,这个时候应该continue
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<string>
    #include<vector>
    #include<algorithm>
    #include<unordered_map>
    #include<unordered_set>
    using namespace std;
    //解法暴力
    //因为有 0000, -0000 这样的数据,所以用字符串处理
    //同性的时候,遍历好朋友时会直接遍历到对方,这个时候应该continue
    
    
    int n, m;
    unordered_map<string, unordered_set<string>> relations;
    
    bool is_same_gender(string id1, string id2)
    {
    	if ((id1[0] == '-' && id2[0] == '-') || (id1[0] != '-' && id2[0] != '-')) return true;
    	return false;
    }
    
    struct result
    {
    	string id1;
    	string id2;
    	result(string _x, string _y)
    	{
    		if (_x[0] == '-') id1 = _x.substr(1);
    		else id1 = _x;
    		if (_y[0] == '-') id2 = _y.substr(1);
    		else id2 = _y;
    	}
    	void print()
    	{
    		cout << id1 << " " << id2 << endl;
    	}
    	bool operator<(const result&r)const
    	{
    		return id1 == r.id1 ? id2 < r.id2: id1 < r.id1 ;
    	}
    };
    
    int main()
    {
    	while (scanf("%d %d", &n, &m) != EOF)
    	{
    		char id1[6], id2[6];
    
    		relations.clear();
    		while (m--)
    		{
    			scanf("%s %s", id1, id2);
    			relations[id1].insert(id2);
    			relations[id2].insert(id1);
    		}
    
    		int q;
    		scanf("%d", &q);
    		while (q--)
    		{
    			vector<result> res; res.clear();
    			scanf("%s %s", id1, id2);
    			for (unordered_set<string>::iterator i = relations[id1].begin(); i != relations[id1].end(); i++)
    			{
    				if (!is_same_gender(id1, (*i)) || (*i) == string(id2)) continue;
    				for (unordered_set<string>::iterator j = relations[id2].begin(); j != relations[id2].end(); j++)
    				{
    					if (!is_same_gender(id2, (*j)) || (*j) == string(id1)) continue;
    					if (relations[(*i)].find(*j) != relations[(*i)].end())
    					{
    						res.push_back(result((*i), (*j)));
    					}
    				}
    			}
    			 
    			sort(res.begin(), res.end());
    			printf("%d
    ", res.size());
    			for (int i = 0; i < res.size(); i++)
    				res[i].print();
    		}
    	}
    
        return 0;
    }
    
  • 相关阅读:
    安卓移动端css3动画卡顿解决方法
    PDO方法实现增删改查
    NPOI 操作笔记
    基于emoji 国际通用表情在web上的输入与显示的记录
    restful 规范
    set与map
    ES6解构赋值
    scss的基本用法
    学习vue的第一二三四五天
    React Hooks --- useState 和 useEffect
  • 原文地址:https://www.cnblogs.com/weedboy/p/8283217.html
Copyright © 2020-2023  润新知