PAT 天梯赛 L2-016. 愿天下有情人都是失散多年的兄妹 【BFS】
题目链接
https://www.patest.cn/contests/gplt/L2-016
思路
用BFS 每层 遍历当代 并且查找当代是否有重复 有重复就跳出 然后 POP 并且将他们的下一代 压入 队列
但是有一个点 要注意
就是 如果存在两个人 他们的上一代 都不可考
那么就默认没有血缘关系
那么就要根据 性别来判断
如果 这两个人 是出现在 某个人的父亲 或 母亲中呢 所以在输入的时候 对于父亲和母亲的性别是没有标记的 那么就会出错
所以要加入 父亲和母亲的性别标记
其实还有种简单的方法 就是用SET就可以了 两个 分别压入 然后判断 SET的大小有没有改变 如果没有改变 就是有重复
或者 用数组标记
AC代码
#include <cstdio>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <map>
#include <stack>
#include <set>
#include <numeric>
#include <sstream>
#include <iomanip>
#include <limits>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair<string, int> psi;
typedef pair<string, string> pss;
const double PI = 3.14159265358979323846264338327;
const double E = exp(1);
const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const int maxn = 1e6 + 5;
const int MOD = 1e9 + 7;
map <int, pii> m;
map <int, int> judge[2];
queue <int> q[2];
int ans;
void bfs(int cur)
{
if (cur == 7)
return;
for (int i = 0; i < 2; i++)
{
judge[i].clear();
while (!q[i].empty())
{
int num = q[i].front();
q[i].pop();
if (num != -1)
judge[i][num] = 1;
}
}
map <int, int>::iterator it;
for (it = judge[0].begin(); it != judge[0].end(); it++)
{
if (judge[1][it->first])
{
ans = cur;
return;
}
else
judge[1].erase(it -> first);
}
for (int i = 0; i < 2; i++)
{
for (it = judge[i].begin(); it != judge[i].end(); it++)
{
if (m[it->first].first != -1)
q[i].push(m[it->first].first);
if (m[it->first].second != -1)
q[i].push(m[it->first].second);
}
}
bfs(cur + 1);
}
int main()
{
map <int, int> vis, opt;
int n;
scanf("%d", &n);
int a, b, c, d;
char code;
for (int i = 0; i < n; i++)
{
scanf("%d %c %d %d", &a, &code, &b, &c);
opt[a] = 1;
if (code == 'M')
vis[a] = 0;
else
vis[a] = 1;
m[a].first = b;
if (b != -1)
{
if (opt[b] == 0)
{
m[b].first = -1;
m[b].second = -1;
}
vis[b] = 0;
}
m[a].second = c;
if (c != -1)
{
if (opt[c] == 0)
{
m[c].first = -1;
m[c].second = -1;
}
vis[c] = 1;
}
}
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d%d", &a, &b);
if (vis[a] == vis[b])
printf("Never Mind\n");
else
{
while (!q[0].empty())
q[0].pop();
while (!q[1].empty())
q[1].pop();
q[0].push(a);
q[1].push(b);
ans = INT_MAX;
bfs(1);
if (ans > 5)
printf("Yes\n");
else
printf("No\n");
}
}
}
PAT 天梯赛 L2-016. 愿天下有情人都是失散多年的兄妹 【BFS】的更多相关文章
- 【PTA 天梯赛】L2-016. 愿天下有情人都是失散多年的兄妹(深搜)
呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚? 输入格式: 输入 ...
- PAT L2-016. 愿天下有情人都是失散多年的兄妹 (BFS)
L2-016. 愿天下有情人都是失散多年的兄妹 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 呵呵.大家都知道五服以内不得通婚 ...
- 愿天下有情人都是失散多年的兄妹(bfs)
L2-016. 愿天下有情人都是失散多年的兄妹 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 呵呵.大家都知道五服以内不得通婚 ...
- L2-016. 愿天下有情人都是失散多年的兄妹(深搜)*
L2-016. 愿天下有情人都是失散多年的兄妹 参考博客 #include<iostream> #include<cstdio> #include<cstring> ...
- L2-016 愿天下有情人都是失散多年的兄妹
L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你 ...
- PAT 天梯赛练习集 L2-016. 愿天下有情人都是失散多年的兄妹
题目链接:https://www.patest.cn/contests/gplt/L2-016 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母. ...
- 团体程序设计天梯赛 L2-016. 愿天下有情人都是失散多年的兄妹
同时也要记录父母的性别,输出询问时要用到 #include <stdio.h> #include <stdlib.h> #include <string.h> #i ...
- PAT L2-016 愿天下有情人都是失散多年的兄妹
https://pintia.cn/problem-sets/994805046380707840/problems/994805061769609216 呵呵.大家都知道五服以内不得通婚,即两个人最 ...
- PAT L2-016 愿天下有情人都是失散多年的兄妹(深搜)
呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚? 输入格式: 输入 ...
随机推荐
- 哇哦!恍然大悟般的“share”功能的实现!
有一个问题一直困扰着我,也是我一直没有时间去了解和学习的,那就是前端(移动端)实现分享到微信.QQ好友.QQ空间.新浪微博等等平台的功能实现,虽然之前有做过,但是都是上一个领导自己写好的,我直接拿来用 ...
- 工作总结 获取html 标签 自定义属性值 根据html 自定义属性 获取 到标签
FFID HFID function getElementByAttr(tag, attr, value) { var aElements = document.getElementsByTag ...
- shader之旅-7-平面阴影(planar shadow)
根据<real-time shadow>这本书第二章中的推导,实现了最简单的阴影技术. planar shadow通过一个投影矩阵将被灯光照射的物体的顶点沿着光线方向投影到接受阴影的平面. ...
- ASP.NET CORE RAZOR :将文件上传至 ASP.NET Core 中的 Razor 页面
本部分演示使用 Razor 页面上传文件. 本教程中的 Razor 页面 Movie 示例应用使用简单的模型绑定上传文件,非常适合上传小型文件. 有关流式传输大文件的信息,请参阅通过流式传输上传大文件 ...
- appium----基本概念
转:http://www.cnblogs.com/nbkhic/p/3803830.html Client/Server Architecture appium的核心其实是一个暴露了一系列REST A ...
- Hive优化策略
hive优化目标 在有限的资源下,运行效率高. 常见问题 数据倾斜.Map数设置.Reduce数设置等 hive运行 查看运行计划 explain [extended] hql 例子 explain ...
- python测试网页是否能正常登陆
#!/usr/bin/python #encoding:utf-8 ##实现网页的登陆检查 import HTMLParser import urlparse import cookielib imp ...
- 搭建Squid反向代理服务器
好吧,更新个文章,有段时间没写技术博文了.今天就说说squid反向代理这个服务,当然,这是在Linux下配置完成的.说自己没偏见似乎不可能 了.大概是相对喜欢Linux而已.但我从不否认Windows ...
- 【Hadoop基础教程】3、Hadoop之伪分布式环境搭建(转)
伪分布式模式即单节点集群模式,所有的守护进程都运行在同一台机器上.这种模式下增加了代码调试功能,可以查看内存.HDFS文件系统的输入/输出,以及与其他守护进程交互.以hadoop用户远程登录K-Mas ...
- bzoj3531【SDOI2014】旅行
3531: [Sdoi2014]旅行 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 850 Solved: 433 [Submit][Status ...