First Contact (30)
来源:互联网 发布:自动注册账号软件 编辑:程序博客网 时间:2024/05/24 07:11
题目链接:https://www.patest.cn/contests/pat-a-101-149-3-2017-12-09/D
本题不难,难点在于建模,其他难点就在于条件判断比较多
直接上代码
#include <cstdio>#include <vector>#include <string>#include <string.h>#include <iostream>#include <map>#include <algorithm>using namespace std;struct Person{ string id; int sex; vector<string> friends; Person(){}};typedef pair<string,string> Result;map<string , Person> persons;string from , to;vector<Result> results;bool cmp(const Result &a , const Result &b){ if(a.first!=b.first)return a.first<b.first; else return a.second<b.second;}void _search( string person_c ){ for(string person_d : persons[person_c].friends){ if( (persons[from].sex==persons[to].sex && persons[person_c].sex ==persons[person_d].sex) || (persons[from].sex!=persons[to].sex && persons[person_c].sex !=persons[person_d].sex) ) { for(string person_to : persons[person_d].friends){ if(person_to==to && persons[person_to].sex==persons[person_d].sex) results.push_back(make_pair( person_c , person_d )); } } }}int main(){ freopen("C:\\Users\\yehao\\Desktop\\Test\\bin\\Release\\in1.txt", "r", stdin); int n , m; cin>>n>>m; string a , b; for(int i=0;i<m;i++){ cin>>a>>b; int sa=(a[0]=='-')?-1:1; int sb=(b[0]=='-')?-1:1; if(sa==-1)a.erase(a.begin()); if(sb==-1)b.erase(b.begin()); persons[a].id=a; persons[b].id=b; persons[a].sex=sa; persons[b].sex=sb; persons[a].friends.push_back(b); persons[b].friends.push_back(a); } /* for(auto it=persons.begin() ; it!=persons.end() ; ++it){ cout<<it->second.id<<"-----"; for(auto s:it->second.friends)cout<<s<<" "; cout<<endl; }*/ int k; cin>>k; for(int i=0;i<k;i++){ cin>>from>>to; if(from[0]=='-')from.erase(from.begin()); if(to[0]=='-')to.erase(to.begin()); results.clear(); for(string c : persons[from].friends) if(persons[c].sex == persons[from].sex ) _search(c); sort(results.begin() , results.end() , cmp); printf("%d\n",results.size()); for(auto &p : results)printf("%s %s\n",p.first.c_str() , p.second.c_str() ); } return 0;}
阅读全文
0 0
- 1139. First Contact (30)
- First Contact (30)
- 1139. First Contact (30)
- 1139. First Contact (30) DFS
- PAT 1139. First Contact (30) 图的存储+相连判断
- Chapter 6. First Contact: DirectDraw
- 【First Day On Work】Contact Info
- BNUOJ 44583 Star Trek: First Contact
- contact
- Contact
- Contact
- contact
- Contact
- Contact
- contact
- 资源推荐 | TensorFlow电子书《FIRST CONTACT WITH TENSORFLOW》
- 资源推荐 | TensorFlow电子书《FIRST CONTACT WITH TENSORFLOW》
- 【BNU校赛】F. Star Trek: First Contact(裸0-1背包)
- 打开页面强制刷新一次 html
- rpm builder
- 3.jQuery事件(1)
- springmvc表单防重复提交
- 跨域定义及处理
- First Contact (30)
- java--集合--TreeMap
- 16-CSS3重点定位和display
- MVC异步AJAX的三种方法(JQuery的Get方法、JQuery的Post方法和微软自带的异步方法)
- SD卡启动imx6q步骤
- 由参加领域驱动大会与自己所想的
- G120
- 蓝桥杯—蛇行矩阵
- Java8-Lock-No.01