7-2 排座位 (25 分)
7-2 排座位 (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
并查集介绍:
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题;
常用操作有:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
int Rela[110][110];//关系
int Parent[110];//上一个节点,同一组的组长的上一节点号为自己的号
void Init_Parent_Rela(int N)
{for(int i=1; i<=N; i++){Parent[i] = i;//初始化根节点为自己 => 并查集的初始化for(int j=1; j<=N; j++){Rela[i][j] = 0;Rela[j][i] = 0;}}
}
int GetOriNode(int pos)//找根节点,根节点相同则在同一组中 => 并查集的查找
{if(Parent[pos] == pos)//如果上一节点号是自己则找到,返回return pos;else{//不是则递归int index = GetOriNode(Parent[pos]);return index;}
}
int Union(int m1, int m2)//=> 并查集的合并
{if(GetOriNode(m1) != GetOriNode(m2)){//根节点不一致int parent = GetOriNode(m1);//找到m1的根节点Parent[parent] = GetOriNode(m2);//将m1的根节点的号改成m2的根节点号,即将两者划到同一组}
}
int main()
{int N, M, K;scanf("%d %d %d", &N, &M, &K);Init_Parent_Rela(N);for(int i=0; i<M; i++){int m1, m2, rela;scanf("%d %d %d", &m1, &m2, &rela);Rela[m1][m2] = rela;Rela[m2][m1] = rela;if(rela == 1)Union(m1, m2);//是朋友就合并朋友圈}int m1, m2;for(int i=0; i<K; i++){scanf("%d %d", &m1, &m2);if(Rela[m1][m2] == 1)//直接朋友printf("No problem\n");else if(Rela[m1][m2] == -1){//存在敌对关系if(GetOriNode(m1) == GetOriNode(m2))//有共同朋友,在同一朋友圈中printf("OK but...\n");else//单纯的敌对关系printf("No way\n");}elseprintf("OK\n");//不是朋友,我感觉不是朋友在统一朋友圈也要输出"No proble",但是那样提交错误}
}
转载于:https://www.cnblogs.com/Jie-Fei/p/10161023.html
7-2 排座位 (25 分)相关推荐
- C++学习之路 | PTA(天梯赛)—— L2-010 排座位 (25分)(带注释)(并查集)(精简)
L2-010 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他 ...
- 7-14 排座位 (25 分)
7-14 排座位 (25 分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们 ...
- 【CCCC】L2-010 排座位 (25分),,并查集+二维矩阵判定关系
problem L2-010 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编 ...
- 7-10 排座位 (25分)(并查集)
7-10 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是 ...
- 【Java】7-5 实验室使用排期 (25分)(List排序)
7-5 实验室使用排期 (25分)(List排序) 受新冠疫情影响,当前大家的活动都必须注意保持充分的社交距离,国家实验室的使用也同样受到了严格的限制.假设规定任何一个时间点上,实验室内最多只能有 1 ...
- CCCC 天梯赛-5-10 排座位
5-10 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他 ...
- c语言寻找大富翁,PTA 7-38 寻找大富翁(25 分)解法(C/C++)暴力快排/精准堆排 解法...
7-38 寻找大富翁 (25分) 胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人.假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁. 输入格式: 输入首 ...
- 某大学图书馆,共有25排座位,每排10个,要求显示前n排的座位号
题目描述 某大学图书馆,共有25排座位,每排10个,要求显示前n排的座位号 输入 输入n 输出 显示前n排座位号 样例输入 10 样例输出 01-01 01-02 01-03 01-04 01-05 ...
- 7-10 排座位(并查集算法)
7-10 排座位(25 分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是 ...
最新文章
- 3559A sdk卡
- 成功解决h5py\_init_.py:26:FutureWarning: Conversion of the second argument of issubdtype from `float` to
- Ancient China Story of Shen-《Kung Fu Panda 2》
- django 1.8 官方文档翻译: 9-1-1 国际化和本地化
- 如何用计算机画磁滞回线,[画图的问题]怎么画类似于磁滞回线的图像?一个x值对应两个y值的...
- 如何利用 RPA 实现自动化获客?
- Inno Setup 6.0.0+ 繁体中文语言包
- 华为HCIE云计算之FC添加ipsan数据存储
- 所谓的1261考核法算不算是末尾淘汰?
- 混合溶剂中的高分子凝胶中的渗透压的一般计算
- Http头:only-if-cached
- 墨天轮沙龙 | 麦杰科技卢学东:openPlant 实时数据库系统及应用
- Apache Griffin+Flink+Kafka实现流式数据质量监控实战
- android 调出键盘表情_Android 显示输入法中的emoji表情以及String字符
- android 手机中boot.img基址的计算方法(zz)
- 【JavaBeans中的属性!】
- Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported
- SkeyeVSS智慧社区综合安防视频管理系统方案 助力小区安防建设智能化
- PHP2020语言排行榜,TIOBE公布了2020年12月编程语言排行榜
- 在Java中使用临时文件/文件夹
热门文章
- loj534. 「LibreOJ Round #6」花团
- 从TikTok功能优化,抓住直播带货机遇
- 使用HTML+CSS+JS 实现粒子动画
- css实现日出日落效果
- Python爬虫 - 抓取divnil动漫妹子图
- Datawhale组队学习——Pytorch进阶训练技巧
- Dubbo Wrapper
- 双鱼林 android 服务器,双鱼林安卓Android代码生成器下载_双鱼林安卓Android代码生成器官方下载-太平洋下载中心...
- IBM面试题:海盗分金算法及其思想
- JAVA菜鸟驿站快递分发系统计算机毕业设计Mybatis+系统+数据库+调试部署