题目描述:

众所周知,只要接触过新冠病毒患者的人就需要被隔离,现在给出了一份接触名单(里面包含该地区所有人的接触记录)和一个确诊病人的编号,请你计算该地区有多少人需要被隔离。

输入描述:

每组测试数据第一行输入一个正整数T(0<T<=5)开始,表示有T组数据 每组数据第一行输入两个整数n,m(0<n<=100000,0<m<=1000)开头,表示改地区有n个人和给出了m份接触名单。 接下来m行,每行首先输入一个整数k表示该行接下来输入k(0<k<=1000)个数据,表示这k个人曾接触过。 最后给出输入一个编号A,代表着确诊病人的编号(编号从0开始,到n-1结束)

输出描述:

输出需要被隔离的人数(包括确诊病人)

测试样例:

样例输入 1

1 5 2 2 1 2 3 0 3 4 1

样例输出 1

2

思路:并查集

AC代码:

#include<bits/stdc++.h>

using namespace std;
int s[100005];
int a[100005];
void csh(int x){
    for (int i = 0 ; i < x ;i++){
        s[i] = i;
    }
}
int findx(int x){
    if (s[x] == x){
        return x;
    }
    else{
        return s[x] = findx(s[x]);
    }
}
void merge(int x,int y){
    x = findx(x),y = findx(y);
    if (x != y){
        s[x] = y;
    }
}
int main() {
    ios::sync_with_stdio(false);
    int t;
    cin>>t;
    while (t--){
        int n,m;
        cin>>n>>m;
        csh(n);
        while (m --){
            int k;
            cin>>k;
            for (int i = 0 ; i < k ;i++){
                cin>>a[i];
                merge(a[0],a[i]);
            }
        }
        int cnt = 0;
        int p;
        cin>>p;
        for (int i = 0 ; i < n ;i++){
            if (findx(p) == findx(s[i])){
                cnt++;
            }
        }
        cout<<cnt<<endl;
    }
    return 0;
}

ZJYYC-找出疑似病例相关推荐

  1. LeetCode简单题之找出两数组的不同

    题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中: answer[0] 是 nums1 中所有 不 存在于 nums2 中的 ...

  2. LeetCode简单题之在长度 2N 的数组中找出重复 N 次的元素

    题目 给你一个整数数组 nums ,该数组具有以下属性: nums.length == 2 * n. nums 包含 n + 1 个 不同的 元素 nums 中恰有一个元素重复 n 次 找出并返回重复 ...

  3. 找出文件1中有而文件2中没有的数据

    // 使用stream方法实现public static List<String> fileterData() throws IOException {String file1Conten ...

  4. python查找字符串出现次数_Python 中找出字符串中出现频率最高的字母

    发现一个学Python的好网站 https://py.checkio.org 第一题大概意思就是找出一个字符串中出现频率最高字母 我的思路也是直接,弄个字典,遍历字符串,将键值对填进字典里,健就是字母 ...

  5. 找出最接近的相似串(DP思想)

    题目:找出最接近的相似串 假设从一个串变化成另一个串所允许的操作只有两种:插入一个字符或者删除一个字符.无论是插入还是删除一个符号,均算作一次操作.一般情况下,度量两个串S1和S2的相似性,可以通过从 ...

  6. linux下比较文件并输出,Linux使用diff命令比较文件找出文件之间相同的部分

    如果你需要比较系统文件的内容,那么你就会是使用到diff命令,可找出文件之间相同的部分,下面小编就给大家详细介绍下Linux diff命令的用法. diff 命令是 linux上非常重要的工具,用于比 ...

  7. 已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。

    已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者. 答案: int max(int a,int b) { return (a+b+abs(a-b))/2; } ...

  8. 找出字符串中所有数字

    刚才网友在SKYPE问Insus.NET一个问题,在MS SQL中,怎样找出一个字符串所有数字. Insus.NET使用较简单与平常的方法,就是使用循环的方法,循环字符串中每一个字符,并插入至一个表变 ...

  9. facebook 直播_什么时候是在Facebook Live上直播的最佳时间? 我分析了5,000个Facebook帖子以找出答案。...

    facebook 直播 by Ofir Chakon 由Ofir Chakon 什么时候是在Facebook Live上直播的最佳时间? 我分析了5,000个Facebook帖子以找出答案. (Whe ...

  10. 中国电子学会scratch等级考试四级编程题:找出出现次数最多的数字

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 我们将有关编程题目的教学视频已经发布到抖 ...

最新文章

  1. OpenCV 笔记(05)— opencv.hpp 头文件作用(是其它所有头文件的全集)
  2. 性能测试回归测试_自动网站性能回归测试
  3. 为什么要继承Serializable类?
  4. 【忘川风华录】雅社——公会社交系统交互设计思考
  5. a=a+b和a+=b的区别
  6. runtime的意义
  7. Ubuntu 安装 Java EE
  8. Python使用pytesseract进行验证码图像识别
  9. 常见容错机制:failover、failfast、failback、failsafe
  10. 七大行星排列图片_太阳系八大行星大小及排列顺序
  11. 使用Graphics将字符串居中绘制到图片上
  12. Mysql将txt文件导入数据库采坑 load data local infile
  13. Turtle库绘画实例
  14. C语言打印某一年的日历 (2*6格式)
  15. mysql1598_mysql中主从复制中出现ERROR 1598 (HY000)错误
  16. codeforces 961 D. Pair Of Lines (几何,向量叉乘,三点共线)
  17. 2020计算机考研985,2020考研:这几所985一个A+学科快来看看吧
  18. android apk 自动编译器,Android APK编译流程
  19. 【一文读懂】Mysql索引原理之环环相扣
  20. 电脑出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。

热门文章

  1. 计算机专业的大学生活演讲稿,大学生演讲稿3到5分钟
  2. 如何使用edu邮箱获取免费的office365
  3. 转载 多家在线考试系统对比分析
  4. Visual Studio2019 C# 设计控件显示
  5. Java 通过两个经纬度, 计算两个地方的距离 单位:km
  6. 看完你不笑证明你不是真的程序员
  7. 计算机专业---如何申请联合国实习
  8. c++捷径教程(第三版)chapter11.1类queue的定义和使用的输出问题
  9. SCAU 计算智能 18290 校赛排名2
  10. Python 生成8位必含数字、大小写字母的字符串(密码)