题目链接: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种关系:

  1. 有共同祖先,不敌对:No problem;
  2. 有共同祖先,敌对:OK but...
  3. 没有共同的祖先,不敌对:OK
  4. 没有共同的祖先,敌对: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(排座位)的更多相关文章

  1. [IOI2018] seats 排座位

    [IOI2018] seats 排座位 IOI2018题解 压缩状态思想很不错的 每次把原来的贡献减掉,新来的再加上 最多涉及10个点 注意: 1.去重 2.下标从0开始 3.线段树初始的最小值个数都 ...

  2. PAT l2-010 排座位 【并查集】

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

  3. 团体程序设计天梯赛-练习集L2-010. 排座位

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

  4. L2-010. 排座位

    L2-010. 排座位 题目链接:https://www.patest.cn/contests/gplt/L2-010 并查集 相关题目:L2-007. 家庭房产,L3-003. 社交集群 下午打的时 ...

  5. L2-010. 排座位(并查集)*

    L2-010. 排座位 参考博客 #include<iostream> #include<math.h> using namespace std; ]; ][]; int fi ...

  6. CCCC 排座位 图着色问题

    1排座位:https://www.patest.cn/contests/gplt/L2-010 2图着色问题 https://www.patest.cn/contests/gplt/L2-023 建图 ...

  7. 排座位&&Little Elephant And Permutation——排列dp的处理

    排列的问题,就是要把序列排个序,使之达到某种最优值或者统计方案数 dp可以解决部分排列问题. 通常的解决方案是,按照编号(优先级)排序决策,从左到右决策两种. 这里主要是第一个. 排座位• 有

  8. pat 团体天梯赛 L2-010. 排座位

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

  9. CCCC L2-010. 排座位【并查集/分类讨论】

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

随机推荐

  1. opencv画出轮廓外接矩形

    Mat cannyImage; /// Detect edges using canny Canny(src, cannyImage, , , ); vector<vector<Point ...

  2. django之ForNode是如何渲染的

    django的模板编译后变成一般text.tag.varible,然后根据上下文进行渲染. class ForNode(Node):    child_nodelists = ('nodelist_l ...

  3. [记录] Mysql 复制表格结构

    有时候我们需要原封不动的复制一张表的表结构来生成一张新表,MYSQL提供了两种便捷的方法 一.LIKE方法 like方法能一模一样的将一个表的结果复制生成一个新表,包括复制表的备注.索引.主键外键.存 ...

  4. 20165304实验一java开发环境熟悉

    实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:李松杨 学号:20165304 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实 ...

  5. Bash:精华

    # 声明索引数组(以从0开始的整数做索引的数组).以下三种等效. declare -a array declare array=(this is numeric array ) array=(this ...

  6. U3D开发中关于脚本方面的限制-有关IOS反射和JIT的支持问题

    U3D文档中说明了,反射在IOS是支持的,除了system.reflection.emit空间内的,其它都支持.JIT是不支持的. 本质上来说即是:只要不在运行时动态生成代码的行为都支持,reflec ...

  7. 【373】LabelEncoder 相关

    OneHotEncoder独热编码和 LabelEncoder标签编码 pandas.DataFrame.groupby

  8. 查看Linux物理CPU个数

    查看内核版本 lsb_release -a 查看物理CPU个数.核数.逻辑CPU个数 (1)具有相同core id的CPU是同一个core的超线程. (2)具有相同physical id的CPU是同一 ...

  9. HashMap 实现总结

    Entry类中需包含键值的hash值,防止resize时的重复计算: Map容量为2的整幂,可使用位操作取代取余操作提高效率: resize时需要将原table的桶内数据置null,利于垃圾回收: h ...

  10. OpenCV Python : No drawMatchesknn function

    2 down vote The functions cv2.drawMatches and cv2.drawMatchesKnn are not available in newer versions ...