By Jalan

文章目录

  • **By Jalan**
  • 知识工具需求
    • 数据结构和算法
  • 题干
  • 题解
    • 第一次
      • 思路
      • 编写用时
      • 代码
        • CPP
          • 运行用时
  • 结尾

知识工具需求

数据结构和算法

  • DFS

题干

通过两个中间人找对象

题解

第一次

思路

  1. 输入要注意-0的存在,同一个编号不会有2个性别.所以用一个hash表来存是不是女生
  2. DFS,注意剪枝,这里我放了一个写在一个DFS的情况,实际上可以把两人是同性别和不同性别分开写,这样可以让逻辑更清晰.
  3. 统一两个DFS的时候借鉴了一个老哥的代码,但是我实在找不到那个老哥的网页了(中途接了对象电话顺便吃了个饭关机了),对不起,砰砰砰…

编写用时

60分钟

代码

CPP

#include <algorithm>
#include <stdio.h>
#include <string>
#include <vector>
using namespace std;
typedef struct node
{int first, second;
} node;
const int maxN = 10010;
int n, m;
vector<vector<int>> g(maxN);
vector<int> isGirl(maxN);
int start, ed;
int first, second;
vector<node> ans;
vector<int> test(6);
bool cmp(node a, node b)
{return a.first != b.first ? a.first < b.first : a.second < b.second;
}
void DFS2(int index, int depth)
{ if (depth == 2){if (index == ed ||index==start|| isGirl[index] != isGirl[start])//index == ed ||index==start||防止同性时找自己{return;}first=index;}if (depth == 3){if (index == ed ||index==start||isGirl[index] != isGirl[ed])//index == ed ||index==start||防止同性时找自己{return;}second=index;}if (depth == 4){if (index != ed){return;}ans.push_back(node{first, second});return;}for (int i = 0; i < g[index].size(); i++){int v = g[index][i];if (v != index)//有向..{DFS2(v, depth + 1);}}
}
int main(int argc, char const *argv[])
{scanf("%d %d", &n, &m);for (int i = 0; i < m; i++){char u[10], v[10];scanf("%s %s", u, v);string as(u), bs(v);int a = abs(stoi(as));int b = abs(stoi(bs));if (as[0] == '-'){isGirl[a] = 1;}if (bs[0] == '-'){isGirl[b] = 1;}g[a].push_back(b);g[b].push_back(a);}int k;scanf("%d", &k);for (int i = 0; i < k; i++){scanf("%d %d", &start, &ed);start = abs(start);ed = abs(ed);ans.clear();DFS2(start, 1);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].first, ans[j].second);}}return 0;
}
运行用时

结尾

看在我写了这么多注释的份上可以给我点个赞嘛,求求惹=]砰砰砰,给我加点写下去的油呀
@.@
也欢迎关注我的CSDN账号呀=]

                                        **开心code每一天**

1139 First Contact (30分)[DFS]相关推荐

  1. PAT甲级1139 First Contact (30 分):[C++题解] 图论、暴力枚举两个点、hash映射

    文章目录 题目分析 题目链接 题目分析 来源:acwing 题目分析: 图论模拟题. 给定暗恋的两个人A 和B,需要寻找一对C 和D ,满足:A和C是朋友,C和D是朋友,D和B是朋友.而且A.C同性别 ...

  2. 1139 First Contact (30 分)【难度: 一般 / 知识点: 模拟】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805344776077312 难倒是不难,但是有坑,例如-0000,000 ...

  3. 【CCCC】L3-014 周游世界 (30分),,DFS搜索最短路,路径打印

    problem L3-014 周游世界 (30分) 周游世界是件浪漫事,但规划旅行路线就不一定了-- 全世界有成千上万条航线.铁路线.大巴线,令人眼花缭乱.所以旅行社会选择部分运输公司组成联盟,每家公 ...

  4. 重返天梯-L3-014 周游世界 (30 分)(dfs)

    题目描述 周游世界是件浪漫事,但规划旅行路线就不一定了-- 全世界有成千上万条航线.铁路线.大巴线,令人眼花缭乱.所以旅行社会选择部分运输公司组成联盟,每家公司提供一条线路,然后帮助客户规划由联盟内企 ...

  5. 地下迷宫探索 30分 dfs

    地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...

  6. PAT甲级1147 Heaps (30 分):[C++题解]堆、树的遍历、dfs、完全二叉树建树

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:给定完全二叉树,判断是否是堆,需要区分大根堆,小根堆.后面是输出后序遍历. AC代码 #include<bits/stdc++. ...

  7. PAT甲级1155 Heap Paths (30 分):[C++题解]堆、堆的遍历、树的遍历、dfs输出路径、完全二叉树建树

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 堆首先是完全二叉树,所以先建完全二叉树,由于给定的是层序遍历的数据,所以直接用数组即可,注意数组下标从1开始,这样便满足结点u和左儿 ...

  8. PAT甲级1053 Path of Equal Weight (30分) :[C++题解]dfs求树的路径长度、邻接表

    文章目录 题目分析 题目链接 题目分析 输入样例: 20 9 24 10 2 4 3 5 10 2 18 9 7 2 2 1 3 12 1 8 6 2 2 00 4 01 02 03 04 02 1 ...

  9. PAT甲级1119 Pre- and Post-order Traversals (30分):[C++题解]暴搜dfs、前序遍历和后序遍历求中序遍历

    文章目录 题目分析 题目链接 题目分析 分析 给了前序遍历和后序遍历,能够确定根结点,但是左子树和右子树的长度是不确定的.这里采用的解决方案是枚举左子树的结点个数,其实右子树的结点个数也确定了.对于每 ...

最新文章

  1. 用二维编码做特色名片!
  2. win10电脑如何安装Openssh?开启Server服务?
  3. 拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树?
  4. 微信APP支付的坑 - errorcode=-1
  5. STM32F013 十元板
  6. php部分---单文件上传的封装类
  7. oracle hang analyze,Oracle hanganalyze工具的使用
  8. WebRTC下载及编译(二)
  9. phper的何去何从
  10. 淘宝店铺装修:如何实现全屏1920px,从上到下!
  11. 编译原理04-自顶向下语法分析方法
  12. 自定义一个腾讯云短信验证码接口spring-starter
  13. jQuery 样式操作
  14. 什么是黎曼和?什么是定积分?
  15. 老王卖西瓜python_python 老王装货
  16. Java程序打包成jar文件
  17. 面了一个4年经验的测试工程师,自动化都不会也要15k,我真是醉了...
  18. 订单外卖小程序前台后台项目设计
  19. 谈谈百度/GOOGLE联盟和一般联盟的区别
  20. 老司机珍藏的130个网站,没人的时候偷偷看!

热门文章

  1. 工艺篇:常用表面处理
  2. 第一期“重庆市市政设计研究院有限公司BIM技术应用专项培训营”活动圆满举行
  3. 计算机应用期刊查重嘛,关于期刊投稿,你所碰到的几件事
  4. Android Ftp 下载文件:服务端搭建,客户端编写使用详情
  5. AndroidFtp客户端(二)
  6. 【R的机器学习】决策树性能提升
  7. IM(即时通讯)服务端(上)
  8. Python request 爬虫 食物营养成分查询平台
  9. EP4CE115F29C7的VGA显示
  10. 程序员超级干货书单分享!这些书年轻时一定要读!