L2-010 排座位 (25分)
布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。
输入格式:

输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系,其中关系为1表示是朋友,-1表示是死对头。注意两个人不可能既是朋友又是敌人。最后K行,每行给出一对需要查询的宾客编号。
这里假设朋友的朋友也是朋友。但敌人的敌人并不一定就是朋友,朋友的敌人也不一定是敌人。只有单纯直接的敌对关系才是绝对不能同席的。
输出格式:

对每个查询输出一行结果:如果两位宾客之间是朋友,且没有敌对关系,则输出No problem;如果他们之间并不是朋友,但也不敌对,则输出OK;如果他们之间有敌对,然而也有共同的朋友,则输出OK but…;如果他们之间只有敌对关系,则输出No way。
输入样例:

7 8 4
5 6 1
2 7 -1
1 3 1
3 4 1
6 7 -1
1 2 1
1 4 1
2 3 -1
3 4
5 7
2 3
7 2
输出样例:

No problem
OK
OK but…
No way

#include<iostream>
using namespace std;
const int maxn = 101;
int pre[maxn]{ 0 };
int fr[maxn][maxn]{ 0 };//记录宾客是否为朋友,1表示为朋友,-1为敌对
int find(int x)//并查集模板,查找
{while (x != pre[x])x = pre[x];return x;
}
void merge(int x, int y)//并查集模板,合并
{int a = find(pre[x]);int b = find(pre[y]);if (a != b) pre[b] = a;
}
void init()//初始化pre数组
{for (int i = 1; i <= maxn; i++) pre[i] = i;
}int main()
{int n, m, k, x, y, st;//x,y,st分别记录宾客1,宾客2,是否为朋友init();cin >> n >> m >> k;for (int i = 0; i < m; i++){cin >> x >> y >> st;if (st == -1)//记录这对宾客为敌{fr[x][y] = st;fr[y][x] = st;}else merge(x, y);//朋友则合并}for (int i = 0; i < k; i++){cin >> x >> y;int a = find(x);int b = find(y);if (fr[x][y] != -1 && a == b)//非敌对关系,且为朋友{cout << "No problem" << endl;}else if (fr[x][y] != -1 && a != b)//非敌对关系,也不是朋友{cout << "OK" << endl;}else if (fr[x][y] == -1 && a == b)//敌对关系,是朋友的朋友{cout << "OK but..." << endl;}else//敌对关系,不是朋友{cout << "No way" << endl;}}}

C++学习之路 | PTA(天梯赛)—— L2-010 排座位 (25分)(带注释)(并查集)(精简)相关推荐

  1. C++学习之路 | PTA(天梯赛)—— L3-003 社交集群 (30分) (带注释) (并查集) (精简)

    L3-003 社交集群 (30分) 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣爱好相同的人的集 ...

  2. C++学习之路 | PTA乙级—— 1040 有几个PAT (25 分)(精简)

    1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...

  3. C++学习之路 | PTA(甲级)—— 1114 Family Property (25分)(带注释)(并查集)(精简)

    1114 Family Property (25分) This time, you are supposed to help us collect the data for family-owned ...

  4. C++学习之路 | PTA乙级—— 1005 继续(3n+1)猜想 (25分)(精简)

    1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中 ...

  5. C++学习之路 | PTA(天梯赛)—— L2-007 家庭房产 (25分)(带注释)(并查集)(精简)

    L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按 ...

  6. C++学习之路 | PTA(天梯赛)—— L2-013 红色警报 (25分)(带注释)(并查集)(精简)

    L2-013 红色警报 (25分) 战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通, ...

  7. C++学习之路 | PTA乙级—— 1036 跟奥巴马一起编程 (15 分)(精简)

    1036 跟奥巴马一起编程 (15 分) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝"计算机科学教育周&qu ...

  8. PTA 天梯赛L1 7-3 跳一跳 (15 分) C语言AC题解【仅供分享】

    微信小程序中的跳一跳相信大家都玩过.emmm???只学习不玩游戏?那就吃亏了-好好读题理解吧. 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束. 如果跳到 ...

  9. C++学习之路 | PTA乙级—— 1087 有多少不同的值 (20 分)(精简)

    1087 有多少不同的值 (20 分) 当自然数 n 依次取 1.2.3.--.N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函数,表示不超过 x 的最大自然 ...

最新文章

  1. 一步一步教你启用WP2.6 Turbo功能
  2. android dialog
  3. abs 不会整数 方法 溢出_在 Golang 中针对 int64 类型优化 abs()
  4. select、poll、epoll之间的区别
  5. mysql总结 博客园_mysql 总结
  6. java并发编程(3)--线程 有序性 volatile
  7. My First HelloWorld Module for Apache~
  8. vmware硬件兼容官方查询地址
  9. php 查看本机ip,查看本机ip地址用什么命令
  10. mysql安装包msi_【MySQL】MySQL之MySQL5.7安装包(msi文件)在Windows8下安装
  11. 框架设计--第七章 MyBatis的核心配置--习题答案
  12. WGS84 与 UTM 互转(Python代码版)
  13. 华为云之ModelArts模型页卡死、模型运行一直失败、云服务器ip访问失败【无法访问此页面】【花了太长时间进行响应】
  14. 在c语言中本征函数说明,西北工业大学 量子力学历年考题某年的吧
  15. 设计一个用于人事管理的People(人员)类
  16. 阳离子微球二氧化硅单分散木莓结构/带正电荷Cd离子修饰介孔二氧化硅(SiO2)表面的制备
  17. C# WebForm %%用法
  18. 武林风云之数据库的基本操作
  19. python电路仿真001
  20. apple_如何找到您的Apple卡号

热门文章

  1. AAAI 2018 论文 | 蚂蚁金服公开最新基于笔画的中文词向量算法
  2. 【TensorFlow】随机训练和批训练的比较与实现
  3. 基于图嵌入的兵棋联合作战态势实体知识表示学习方法
  4. 20190626_二次开发BarTender打印机_C#代码_一边读取TID_一边打印_打印机POSTEK
  5. python数据图形化—— matplotlib 基础应用
  6. 从Airbnb的发展历程和网易云的大起大落看IT行业创新(第5周课后作业)
  7. 关于mysql ERROR 1045 (28000)错误的解决办法
  8. Chapter 3.GDI/DirectDraw Internal Data Structures
  9. [LeetCode] Plus One
  10. js处理日期的一些整理(js获取给定日期前一天的日期)