1118. Birds in Forest (25)

简介: #include #include #include #include #include using namespace std;int father[10001];int to[10001];int fi...
#include <iostream>
#include <vector>
#include <algorithm>
#include <stack>
#include <map>
using namespace std;
int father[10001];
int to[10001];

int find(int x){
    while (x != father[x]) {
        x = father[x];
    }
    return x;
}
void Union(int a, int b){
    a = find(a);
    b = find(b);
    if(a < b) father[b] = a;
    else father[a] = b;
}

int main(){
    int n;
    cin >> n;
    map<int, bool> ma;
    vector<int> v;
    for (int i = 0; i < 10001; i++) {
        father[i] = i;
    }
    for (int i = 1; i <= n; i++) {
        int k;
        cin >> k;
        for (int j = 0; j < k; j++) {
            int t;
            cin >> t;
            if(!ma[t]){
                v.push_back(t);
                ma[t] = true;
                to[t] = i;//每一只鸟在那棵树上
            }
            Union(i, find(to[t]));//将两棵树联系在一起
        }
    }
    int cnt = 0;
    map<int, bool> mb;
    for (int i = 0; i < v.size(); i++) {
        if(find(to[v[i]]) && !mb[find(to[v[i]])]){
            mb[find(to[v[i]])] = true;
            cnt++;
        }
    }
    cout << cnt << ' ' << v.size() << endl;

    int k;
    cin >> k;
    for (int i = 0; i < k; i++) {
        int a, b;
        cin >> a >> b;
        if(find(to[a]) == find(to[b])){
            cout << "Yes\n";
        }else{
            cout << "No\n";
        }
    }
    return 0;
}
目录
相关文章
|
应用服务中间件 数据库连接 Nacos
Seata常见问题之Seata事物卡住了如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
|
Linux
Linux(1)arm64根目录扩容
Linux(1)arm64根目录扩容
210 0
|
机器学习/深度学习 资源调度 监控
PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample Dropout等 !!
PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample Dropout等 !!
345 0
|
Java jvm-sandbox Perl
Jvm-Sandbox源码分析--启动简析
1.工作原因,使用jvm-sandbox比较多,遂进行源码分析,做到知己知彼,个人能力有限,如有错误,欢迎指正。 2.关于jvm-sandbox 是什么,如何安装相关环境,可移步官方文档 3.源码分析基于jvm-sandbox 最新的master代码,tag-1.2.1。
8312 1
Jvm-Sandbox源码分析--启动简析
|
前端开发
一次偶然的机会,让我遇见了amis之排错总结(持续更新,因为还在学习)(下)
一次偶然的机会,让我遇见了amis之排错总结(持续更新,因为还在学习)
|
编解码 算法 数据处理
基于八叉树的空间划分及搜索操作
基于八叉树的空间划分及搜索操作
基于八叉树的空间划分及搜索操作
|
Shell Docker 容器
解决:E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
为了让容器服务启动更加方面,于是自己手写了一个 docker-compose.yml 配置脚本。脚本内容如下:
2350 0
|
10月前
|
安全 Linux API
恶意代码分析入门--静态分析(chapter1_Lab01-01)
本文档介绍了在Windows XP SP3环境下,利用PEiD、Strings、PETools等工具对Lab01-01.exe和Lab01-01.dll两个文件进行恶意代码分析的过程。实验包括在线扫描、PE结构分析、检查是否加壳、分析导入函数、字符串搜索等步骤,最终推测出这两个文件的潜在恶意行为及目的。通过这一系列的静态分析手段,能够初步判断出恶意代码的性质与功能,为后续的深入研究提供了基础。
237 5
恶意代码分析入门--静态分析(chapter1_Lab01-01)
|
11月前
|
C语言
【数据结构】双向带头循环链表(c语言)(附源码)
本文介绍了双向带头循环链表的概念和实现。双向带头循环链表具有三个关键点:双向、带头和循环。与单链表相比,它的头插、尾插、头删、尾删等操作的时间复杂度均为O(1),提高了运行效率。文章详细讲解了链表的结构定义、方法声明和实现,包括创建新节点、初始化、打印、判断是否为空、插入和删除节点等操作。最后提供了完整的代码示例。
319 0
|
JavaScript API
vue3【详解】vue3 比 vue2 升级了哪些重要的功能?
vue3【详解】vue3 比 vue2 升级了哪些重要的功能?
154 0