博客
关于我
7-4 愿天下有情人都是失散多年的兄妹 (25 分)
阅读量:261 次
发布时间:2019-03-01

本文共 1634 字,大约阅读时间需要 5 分钟。

为了解决这个问题,我们需要判断一对情侣是否可以结婚。根据题目要求,两个人如果有五代以内的共同祖先,就不能结婚。我们需要通过分析两人各自的五代祖先来确定他们是否可以结婚。

方法思路

  • 输入处理:首先读取输入数据,包括每个人的ID、性别、父亲ID和母亲ID。将这些信息存储在适当的数据结构中。
  • 构建祖先树:对于每个人,生成他们的五代以内的祖先集合。使用广度优先搜索的方法,从当前节点开始,逐层扩展,直到达到五代。
  • 判断关系:对于每一对情侣,分别生成他们的五代祖先集合。如果两个集合有交集,说明他们有共同的祖先,不能结婚;否则,如果是异性,能结婚。
  • 解决代码

    n = int(input())maxn = 100010father = [-1] * (maxn + 1)mother = [-1] * (maxn + 1)gender = [''] * (maxn + 1)for _ in range(n):    parts = input().split()    id = int(parts[0])    g = parts[1]    f = int(parts[2])    m = int(parts[3])    father[id] = f    mother[id] = m    gender[id] = gk = int(input())results = []def get_ancestors(x, depth):    visited = set()    current_level = [x]    for _ in range(depth):        next_level = []        for node in current_level:            if node != -1:                p = father[node]                m = mother[node]                next_level.append(p)                next_level.append(m)        current_level = next_level        for node in current_level:            if node != -1:                visited.add(node)    return visitedfor _ in range(k):    x, y = map(int, input().split())    if gender[x] == gender[y]:        results.append("Never Mind")        continue    x_ance = get_ancestors(x, 5)    y_ance = get_ancestors(y, 5)    if x_ance & y_ance:        results.append("No")    else:        results.append("Yes")print(' '.join(results))

    代码解释

  • 输入处理:读取输入数据并存储到相应的数组中,fathermother数组记录每个人的父亲和母亲ID,gender数组记录每个人的性别。
  • 构建祖先树get_ancestors函数使用广度优先搜索的方法,从当前节点开始,逐层扩展,记录五代以内的所有祖先。
  • 判断关系:对于每一对情侣,生成他们的五代祖先集合,检查是否有交集。如果有交集,输出"No";否则,输出"Yes"。如果两人性别相同,直接输出"Never Mind"。
  • 这个方法通过广度优先搜索高效地构建祖先树,并使用集合操作快速判断是否有共同祖先,确保了算法的正确性和效率。

    转载地址:http://yesa.baihongyu.com/

    你可能感兴趣的文章
    PHP获取日期的一些方法总结
    查看>>
    R2学习记录
    查看>>
    php解析ipa包,获取logo
    查看>>
    php设计模式 萨莱 pdf,PHP设计模式 建造者模式
    查看>>
    php设计模式之装饰器模式
    查看>>
    R&Python Data Science系列:数据处理(5)--字符串函数基于R(一)
    查看>>
    PHP设计模式:观察者模式
    查看>>
    php详细学习1
    查看>>
    php语言优劣
    查看>>
    PHP语言最优雅的支付SDK扩展包
    查看>>
    PHP请求https域名发生segment fault段错误
    查看>>
    PHP读写XML文件
    查看>>
    PHP读写XML文件
    查看>>
    R&Python Data Science 系列:数据处理(3)
    查看>>
    php读取xml 数据库字段超长处理
    查看>>
    php课程 12-40 抽象类的作用是什么
    查看>>
    php课程 4-16 数组自定义函数(php数组->桶)
    查看>>
    PHP调用接口用post方法传送json数据
    查看>>
    php转化IP为整形
    查看>>
    php输出数据到csv文件
    查看>>