博客
关于我
3-2 排座位 (20分)
阅读量:112 次
发布时间:2019-02-26

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

为了解决这个问题,我们需要确保在安排宴席座位时,任何一对死对头不会坐在同一张宴会桌旁。我们可以使用并查集(Union-Find)来高效地管理朋友关系,并使用二维数组来记录敌对关系。

方法思路

  • 初始化数据结构:使用并查集来管理朋友关系,二维数组用于记录敌对关系。
  • 处理关系:遍历所有给定的关系,更新并查集和敌对数组。
  • 处理查询:对于每个查询,检查两位宾客的关系和是否有共同朋友,根据情况输出相应的结果。
  • 解决代码

    #include 
    using namespace std;int f[101];int di[101][101];void init() { for (int i = 1; i <= 100; i++) { f[i] = i; }}int find(int x) { if (x == f[x]) { return x; } else { f[x] = find(f[x]); }}void merge(int x, int y) { int a = find(x); int b = find(y); if (a != b) { f[b] = a; }}int main() { int n, m, k; cin >> n >> m >> k; init(); int g1, g2, ship; while (m--) { cin >> g1 >> g2 >> ship; if (ship == 1) { merge(g1, g2); } else { di[g1][g2] = di[g2][g1] = 1; } } while (k--) { cin >> g1 >> g2; int a = find(g1); int b = find(g2); if (di[g1][g2] == 1) { if (a == b) { cout << "OK but..." << endl; } else { cout << "No way" << endl; } } else { if (a == b) { cout << "No problem" << endl; } else { cout << "OK" << endl; } } } return 0;}

    代码解释

  • 初始化init函数初始化并查集,每个宾客最初都是自己的代表。
  • 查找find函数用于查找一个元素的根节点,路径压缩优化了查找时间。
  • 合并merge函数将两个集合合并,用于处理朋友关系。
  • 处理输入:读取输入数据,处理关系,更新并查集和敌对数组。
  • 处理查询:对于每个查询,检查是否为敌对关系及其共同朋友,输出相应结果。
  • 这种方法确保了高效处理大量关系,并准确判断每对宾客是否可以同席。

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

    你可能感兴趣的文章
    Page Object模式:为什么它是Web自动化测试的必备工具
    查看>>
    SpringBoot中重写addCorsMapping解决跨域以及提示list them explicitly or consider using “allowedOriginPatterns“ in
    查看>>
    PageHelper 解析及实现原理
    查看>>
    pageHelper分页工具的使用
    查看>>
    pageHelper分页技术
    查看>>
    PageHelper分页查询遇到的小问题
    查看>>
    PageHelper实现分页详细版、整合SSM应用
    查看>>
    PageHelper常见问题
    查看>>
    SpringBoot中配置为开发模式,代码修改后不用重新运行
    查看>>
    springboot中pom.xml、application.yml、application.properties
    查看>>
    PageHelper:上手教程(最详细)
    查看>>
    PageOffice如何实现从零开始动态生成图文并茂的Word文档
    查看>>
    PageRank算法
    查看>>
    Paint类(画笔)
    查看>>
    paip. 调试技术打印堆栈 uapi print stack java php python 总结.
    查看>>
    paip.android 手机输入法制造大法
    查看>>
    paip.spring3 mvc servlet的配置以及使用最佳实践
    查看>>
    Palindrome Number leetcode java
    查看>>
    Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)
    查看>>
    Palo Alto Networks Expedition 远程命令执行漏洞(CVE-2024-9463)
    查看>>