目的:找出能帮两个人做第一次联系的朋友

输入:

N  (1,300] 总人数

M 关系对,边

M条关系对。每个人有4位数字代替。负数是女孩

K  <=100  查询数

K对男女,第一个人爱上了第二个人

输出:

对于每个查询,输出不同的朋友对数,可以帮助他们的朋友对数,然后在每一行输出朋友对ID。

如果A,B是相反的性别。先输出于A相同性别的A的朋友,在输出于B相同性别B的朋友。如果AB性别相同。输出和他们性别相同的朋友。

按照非减输出第一个id。然后非减少输出第二个id。

算法:

先把边按照男生女生分开存,由于id是四位正负都有的数字,所以存边不用矩阵,用链表。然后深度优先搜索。找到一条路径就比对是否满足条件,然后把它存进vector向量。开始用map存边。

#include<iostream>
#include<stdio.h>
#include<string>
#include<map>
#include<vector>
#include<algorithm>using namespace std;struct node{int b,c;};map<int,bool> h;
vector<int> frnd[10000];
int n,m,k;
bool cmp(node a,node d)
{if(a.b!=d.b){return a.b<d.b;}else{return a.c<d.c;}
}
int main()
{scanf("%d%d",&n,&m);for(int i=0;i<m;i++){string left,right;cin>>left>>right;if(left.size()==right.size()){frnd[abs(stoi(left))].push_back(abs(stoi(right)));frnd[abs(stoi(right))].push_back(abs(stoi(left)));}h[abs(stoi(right))*10000+abs(stoi(left))]= h[abs(stoi(left))*10000+abs(stoi(right))] = true;}scanf("%d",&k);for(int i=0;i<k;i++){int a,d;cin>>a>>d;vector<node> ans;for(int j=0;j<frnd[abs(a)].size();j++){for(int l=0;l<frnd[abs(d)].size();l++){if(frnd[abs(a)][j]==abs(d)||frnd[abs(d)][l]==abs(a)) continue;if(h[frnd[abs(a)][j]*10000+frnd[abs(d)][l]]==true){ans.push_back(node{frnd[abs(a)][j],frnd[abs(d)][l]});}}}printf("%d\n",ans.size());sort(ans.begin(),ans.end(),cmp);for(int j=0;j<ans.size();j++){printf("%04d %04d\n",ans[j].b,ans[j].c);}}return 0;
}

反思:在家休息了十天,智力水平倒退回3岁水平。

PAT a1139相关推荐

  1. 【PAT甲级】A1101-A1155刷题记录

    文章目录 (递推) A1101 Quick Sort (25 分) 0.23 (静态二叉树+遍历) A1102 Invert a Binary Tree (25 分) 0.51 (数学问题) A110 ...

  2. 【置顶】【PAT】PAT甲级题目及分类总结(持续更新ing)

    在2019年3月底,我决定考浙大计院,经过一个月还算凑合的学习,痛定思痛,决定整理整理自己的博客. 粗略估计,大概一个月的时间里我AC了31道题,大概用时40个小时上下,毕竟还要把大部分时间花在笔试上 ...

  3. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  4. 1093 Count PAT‘s

    这题出现在"活用递推"专题下面,所谓递推就是这一步的结果和上一步的结果有直接联系.对于本题来说,从左到右,记到当前位置,一共出现的P的个数,如果当前位置是P,则个数就是上一位的加1 ...

  5. 网络地址转换(PAT)

    一.静态NAT 1.实验环境 GNS3模拟软件 2.网络拓扑及IP地址规划如图 3. 通过配置PAT实现IP地址的多路复用,达到节省IP地址的目的 4.实验步骤(IP地址配置步骤省略) R1上的配置 ...

  6. PAT甲级(Advanced Level)真题--1046 Sharing

    PAT甲级(Advanced Level)真题–1046 Sharing 通过:648 提交:1138 通过率:56% To store English words, one method is to ...

  7. PAT甲级(Advanced Level)真题-- 1062 To Buy or Not to Buy

    PAT甲级(Advanced Level)真题-- 1062 To Buy or Not to Buy 通过:643 提交:1220 通过率:52% Eva would like to make a ...

  8. PAT甲级真题 1018 A+B in Hogwarts--python解法

    PAT甲级真题 1018 A+B in Hogwarts 提交:2638 通过:1559 通过率:59% If you are a fan of Harry Potter, you would kno ...

  9. ospf和pat及nat的配置

    思科配置ospf> Router(config)#router ospf 1 //配置ospf 1 Router(config-router)#network 192.168.50.0 0.0. ...

最新文章

  1. python processpoolexector 释放内存_关于python:如何在multiprocessing.queue中从Process中释放内存?...
  2. mybatis 如何判断重复插入_MyBatis常见面试题3:数据库插入重复如何处理
  3. python资料库-Python对接六大主流数据库(只需三步)
  4. CentOS7安装配置redis5.0.5
  5. RIP RETE时间获得PHREAKY
  6. 7-3 银行排队问题之单队列多窗口服务 (25 分)
  7. 今晚直播丨MySQL的查询与优化
  8. sm2算法前端处理_Postman接口自动化测试实例用到的完整的SM2前端加密算法代码...
  9. 美国诚实签经验——医生的预约单和赴美生子的费用明细表
  10. uniapp的navigateTo页面跳转参数传递问题
  11. Python中的打包与解包
  12. esp-hosted方案落地
  13. 露天靶场建设方案,打靶设备和防弹墙作为主要工程建设
  14. curl命令学习使用小结
  15. 编写一个基于控制台的购书系统实现购书功能
  16. vue--百度地图之离线地图--大量标注点造成卡顿问题--海量点聚合性能优化
  17. 【唐老狮】商业游戏开发前后端程序区别
  18. 服务器通过笔记本共享网络
  19. JavaScript 进阶知识 - 高级篇
  20. DIY-BETAFPV和DIY(ESP-01F+E19-900M20S2模块)915MHz信号测试对比

热门文章

  1. 亚商投资顾问 早餐FM/1011国内成品油价调整迎年内首次搁浅
  2. 那些实用的 Chrome 扩展神器(二)
  3. 头部导航栏和底部 图片pic 字体图标设置文字大小
  4. WSTMart开源商城
  5. 大数据工程师需要哪些基础知识?
  6. 国外ERP产品点评 (转载)
  7. 两部苹果手机同步照片_安卓手机里的便签怎么导到苹果手机?安卓和苹果手机便签同步...
  8. 企业微信员工离职如何转移客户?
  9. VMware: vmw_ioctl_command error 无效的参数.
  10. 【CP2K教程(二)】WO3的投影态密度和能带结构