pta l2-10(排座位)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805066135879680
题意:给宴席排座位,有n个人,m个关系,k组询问,1表示为朋友,-1表示为敌人。询问时,两人为朋友而非敌人输出No problem,两人既不为敌人也不为朋友输出OK,两人为敌人但有共同的朋友输出OK but...,两人只有敌人关系输出No way。
思路:并查集,题目看着很绕,其实仔细看就会发现很简单。我们把有朋友关系的人并起来,但这个集合里也可能有敌人关系,然后用二维数组is[i][j]记录i,j是否是敌人,即两个人之间可能有4种关系:
- 有共同祖先,不敌对:No problem;
- 有共同祖先,敌对:OK but...
- 没有共同的祖先,不敌对:OK
- 没有共同的祖先,敌对:No way
AC代码:
#include<bits/stdc++.h>
using namespace std; int root[],is[][],n,m,k; int getr(int kk){
if(root[kk]==kk) return kk;
else return root[kk]=getr(root[kk]);
} int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;++i)
root[i]=i;
int a,b,c;
while(m--){
scanf("%d%d%d",&a,&b,&c);
if(c==){
int ar=getr(a),br=getr(b);
if(ar!=br)
root[br]=ar;
}
else
is[a][b]=is[b][a]=;
}
while(k--){
scanf("%d%d",&a,&b);
int ar=getr(a),br=getr(b);
if(ar==br&&!is[a][b]) printf("No problem\n");
else if(ar==br&&is[a][b]) printf("OK but...\n");
else if(ar!=br&&!is[a][b]) printf("OK\n");
else printf("No way\n");
}
return ;
}
pta l2-10(排座位)的更多相关文章
- [IOI2018] seats 排座位
[IOI2018] seats 排座位 IOI2018题解 压缩状态思想很不错的 每次把原来的贡献减掉,新来的再加上 最多涉及10个点 注意: 1.去重 2.下标从0开始 3.线段树初始的最小值个数都 ...
- PAT l2-010 排座位 【并查集】
L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...
- 团体程序设计天梯赛-练习集L2-010. 排座位
L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...
- L2-010. 排座位
L2-010. 排座位 题目链接:https://www.patest.cn/contests/gplt/L2-010 并查集 相关题目:L2-007. 家庭房产,L3-003. 社交集群 下午打的时 ...
- L2-010. 排座位(并查集)*
L2-010. 排座位 参考博客 #include<iostream> #include<math.h> using namespace std; ]; ][]; int fi ...
- CCCC 排座位 图着色问题
1排座位:https://www.patest.cn/contests/gplt/L2-010 2图着色问题 https://www.patest.cn/contests/gplt/L2-023 建图 ...
- 排座位&&Little Elephant And Permutation——排列dp的处理
排列的问题,就是要把序列排个序,使之达到某种最优值或者统计方案数 dp可以解决部分排列问题. 通常的解决方案是,按照编号(优先级)排序决策,从左到右决策两种. 这里主要是第一个. 排座位• 有
- pat 团体天梯赛 L2-010. 排座位
L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...
- CCCC L2-010. 排座位【并查集/分类讨论】
L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...
随机推荐
- opencv画出轮廓外接矩形
Mat cannyImage; /// Detect edges using canny Canny(src, cannyImage, , , ); vector<vector<Point ...
- django之ForNode是如何渲染的
django的模板编译后变成一般text.tag.varible,然后根据上下文进行渲染. class ForNode(Node): child_nodelists = ('nodelist_l ...
- [记录] Mysql 复制表格结构
有时候我们需要原封不动的复制一张表的表结构来生成一张新表,MYSQL提供了两种便捷的方法 一.LIKE方法 like方法能一模一样的将一个表的结果复制生成一个新表,包括复制表的备注.索引.主键外键.存 ...
- 20165304实验一java开发环境熟悉
实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:李松杨 学号:20165304 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实 ...
- Bash:精华
# 声明索引数组(以从0开始的整数做索引的数组).以下三种等效. declare -a array declare array=(this is numeric array ) array=(this ...
- U3D开发中关于脚本方面的限制-有关IOS反射和JIT的支持问题
U3D文档中说明了,反射在IOS是支持的,除了system.reflection.emit空间内的,其它都支持.JIT是不支持的. 本质上来说即是:只要不在运行时动态生成代码的行为都支持,reflec ...
- 【373】LabelEncoder 相关
OneHotEncoder独热编码和 LabelEncoder标签编码 pandas.DataFrame.groupby
- 查看Linux物理CPU个数
查看内核版本 lsb_release -a 查看物理CPU个数.核数.逻辑CPU个数 (1)具有相同core id的CPU是同一个core的超线程. (2)具有相同physical id的CPU是同一 ...
- HashMap 实现总结
Entry类中需包含键值的hash值,防止resize时的重复计算: Map容量为2的整幂,可使用位操作取代取余操作提高效率: resize时需要将原table的桶内数据置null,利于垃圾回收: h ...
- OpenCV Python : No drawMatchesknn function
2 down vote The functions cv2.drawMatches and cv2.drawMatchesKnn are not available in newer versions ...