5-10 排座位   (25分)

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

输入格式:

输入第一行给出3个正整数:N(\le≤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
这个题目我们用dfs来写,就是建立一个二维的数组
firend[i][j];初始值为0,-1代表i j 是敌人,1代表是朋友
有时候i,j是0,但是他们有共同的朋友我们就要运用搜索,去找到
他们共同的朋友
#include<cstdio>
#include<cstring>
int firends[120][120];
int vis[120][120];
int n,m,k,tag;
void dfs(int x,int y)
{if(tag)//已经找到共同的朋友 return ;int i;for(i=1;i<=n;++i){if(vis[x][i])continue; if(firends[x][i]==1){if(i==y){tag=1;return ;} else{vis[x][i]=vis[i][x]=1; dfs(i,y);} } }
}
int main()
{scanf("%d%d%d",&n,&m,&k);int i,j;memset(firends,0,sizeof(firends));//初始值均为0 while(m--){int fa,fb,rat;scanf("%d%d%d",&fa,&fb,&rat);firends[fa][fb]=rat;firends[fb][fa]=rat; } for(i=0;i<k;++i){int a,b;memset(vis,0,sizeof(vis));scanf("%d%d",&a,&b);//输入需要查询的2个人的编号tag=0;if(firends[a][b]==1){printf("No problem\n");continue;} vis[a][b]=vis[b][a]=1; dfs(a,b);//tag==1,代表2人有共同的朋友 if(firends[a][b]==-1){if(tag)//有朋友 printf("OK but...\n"); else//没有共同朋友 printf("No way\n"); } else//firends[a][b]==0 {if(tag)//朋友的朋友还是朋友 printf("No problem\n");else//二个人什么关系都没有 printf("OK\n"); }     } return 0;
} 

CCCC 天梯赛-5-10 排座位相关推荐

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

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

  2. CCCC天梯赛 L1-079 天梯赛的善良

    CCCC天梯赛 L1-079 天梯赛的善良 天梯赛是个善良的比赛.善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分. 于是 ...

  3. CCCC天梯赛L1-075 强迫症

    CCCC天梯赛L1-075 强迫症 小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808. 有强迫症的小强请你写个程序,把所有人的出生 ...

  4. 2021年CCCC天梯赛 L2清点代码库 (哈希表,数据结构)

    分析 2021年CCCC天梯赛的一道问题. 使用一个数据结构存贮所有的数组及其出现的次数. 使用哈希表mp存储数组vector<intvector< int\>vector<i ...

  5. CCCC天梯赛 L2-037 包装机

    CCCC天梯赛 L2-037 包装机 一种自动包装机的结构如图 1 所示. 首先机器中有 N 条轨道,放置了一些物品. 轨道下面有一个筐. 当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品 ...

  6. CCCC天梯赛 人与神

    CCCC天梯赛L1-073 人与神 跨界大神 L. Peter Deutsch 有一句名言:"To iterate is human, to recurse divine."(迭代 ...

  7. CCCC 天梯赛 PTA ZOJ 题目 L1 L2 L3

    PTA 天梯赛题目整理 L2 难点 **L2-001 紧急救援** **L2-002 链表去重** **L2-003 月饼** **L2-004 这是二叉搜索树吗** **L2-005 集合相似度** ...

  8. 2021年CCCC天梯赛 【部分题题解】

    天梯赛有三个level,第一个level基本就是语法题,第二个level是基础算法和STL库的一些应用. 第三个level就是一些难的算法. L3的题都不是太会,有思路但是写不出来. 目录 L1 人与 ...

  9. 2021年cccc天梯赛题解

    L1-1 人与神 (5 分) 题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652352 题 ...

最新文章

  1. 七牛访谈|秒拍&小咖秀CTO汤力嘉:产品的生存系于技术
  2. Oracle数据库的导入和导出的两种方式
  3. 如何修复崩溃的WordPress数据库表
  4. MongoDB 操作
  5. dede 调用四级导航
  6. (十一)JAVA springboot ssm b2b2c多用户商城系统 - SSO单点登录之OAuth2.0登录流程(2)
  7. 拓端tecdat|R语言文本挖掘、情感分析和可视化哈利波特小说文本数据
  8. Atitit 数据分析存储位置的查找方法与流程attilax总结
  9. WordPress热门网站主题汇总(长期更新)
  10. java1.4.2中文下载_j2sdk1.4.2|Java 2 SDK Standard Edition(Java开发平台)下载v1.4.2官方版 - 欧普软件下载...
  11. 配置微信公众号之公众号绑定小程序
  12. 上海海洋大学计算机二级成绩,上海海洋大学是几本 2018分数线是多少分
  13. 天行健,君子以自强不息;地势坤,君子以厚德载物 释意
  14. CSS尺寸与文本讲解。HTML、CSS笔记(四)。
  15. Crosswalk 运行报错问题
  16. 一文搞清楚码元速率(波特率)和比特速率(比特率)的区别
  17. java黑皮书25.18-19----(压缩与解压),带界面,概念版
  18. 他,10年软件开发经验,告诉你30岁后的程序员如何成功转型?
  19. Java设计养老院系统_基于JavaWeb的养老院管理系统设计任务书
  20. JAVA框架:hibernate

热门文章

  1. 关于文献阅读和寻找新的科研题目
  2. ubuntu 压缩率最高的软件_可能是目前最好用的免费压缩软件
  3. EXCEL仪表盘,可视化大屏,数据看板制作
  4. 堆排序稳定性举例_常见排序算法的稳定性分析
  5. 阿里云ubuntu源_优麒麟19.04即将发布,华为、阿里云、重大、360四大境像站鼎力支持!...
  6. 程序员知识产权问题:程序员在家自己开发小软件,公司是否有权利强制留下?
  7. 中国人保为中环盛达环保科技集团承保产品责任险,为消费者保驾护航
  8. Docker搭建Skywalking环境
  9. 《管理学》第三章 决策
  10. 服务器上安装anaconda3