1118 Birds in Forest (25 分)

Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in the same picture belong to the same tree. You are supposed to help the scientists to count the maximum number of trees in the forest, and for any pair of birds, tell if they are on the same tree.

Input Specification:

Each input file contains one test case. For each case, the first line contains a positive number N (≤10​4​​) which is the number of pictures. Then N lines follow, each describes a picture in the format:

K B​1​​ B​2​​ ... B​K​​

where K is the number of birds in this picture, and B​i​​'s are the indices of birds. It is guaranteed that the birds in all the pictures are numbered continuously from 1 to some number that is no more than 10​4​​.

After the pictures there is a positive number Q (≤10​4​​) which is the number of queries. Then Q lines follow, each contains the indices of two birds.

Output Specification:

For each test case, first output in a line the maximum possible number of trees and the number of birds. Then for each query, print in a line Yes if the two birds belong to the same tree, or No if not.

Sample Input:

4
3 10 1 2
2 3 4
4 1 5 7 8
3 9 6 4
2
10 5
3 7

Sample Output:

2 10
Yes
No

分析:并查集,水题。
 /**
 * Copyright(c)
 * All rights reserved.
 * Author : Mered1th
 * Date : 2019-02-27-20.04.59
 * Description : A1118
 */
 #include<cstdio>
 #include<cstring>
 #include<iostream>
 #include<cmath>
 #include<algorithm>
 #include<string>
 #include<unordered_set>
 #include<map>
 #include<vector>
 #include<set>
 using namespace std;
 ;
 int father[maxn];
 int findFather(int x){
     int a=x;
     while(x!=father[x]){
         x=father[x];
     }
     while(a!=father[a]){
         int z=a;
         a=father[a];
         father[z]=x;
     }
     return x;
 }

 void Union(int a,int b){
     int faA=findFather(a);
     int faB=findFather(b);
     if(faA!=faB){
         father[faB]=faA;
     }
 }

 int main(){
 #ifdef ONLINE_JUDGE
 #else
     freopen("1.txt", "r", stdin);
 #endif
     ;
     scanf("%d",&n);
     ;i<maxn;i++) father[i]=i;
     ;i<n;i++){
         scanf("%d%d",&k,&t);
         maxin=max(maxin,t);
         ;j<k-;j++){
             scanf("%d",&t1);
             maxin=max(maxin,t1);
             Union(t,t1);
         }
     }
     set<int> tree;
     ;i<=maxin;i++){
         tree.insert(findFather(i));
     }
     printf("%d %d\n",tree.size(),maxin);
     int query,u,v;
     scanf("%d",&query);
     ;i<query;i++){
         scanf("%d%d",&u,&v);
         if(findFather(u)==findFather(v)) printf("Yes\n");
         else printf("No\n");
     }
     ;
 }
 

1118 Birds in Forest (25 分)的更多相关文章

  1. 【PAT甲级】1118 Birds in Forest (25分)(并查集)

    题意: 输入一个正整数N(<=10000),接着输入N行数字每行包括一个正整数K和K个正整数,表示这K只鸟是同一棵树上的.输出最多可能有几棵树以及一共有多少只鸟.接着输入一个正整数Q,接着输入Q ...

  2. [并查集] 1118. Birds in Forest (25)

    1118. Birds in Forest (25) Some scientists took pictures of thousands of birds in a forest. Assume t ...

  3. 1118. Birds in Forest (25)

    Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...

  4. PAT A 1118. Birds in Forest (25)【并查集】

    并查集合并 #include<iostream> using namespace std; const int MAX = 10010; int father[MAX],root[MAX] ...

  5. PAT题解-1118. Birds in Forest (25)-(并查集模板题)

    如题... #include <iostream> #include <cstdio> #include <algorithm> #include <stri ...

  6. PAT甲级——1118 Birds in Forest (并查集)

    此文章 同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/89819984   1118 Birds in Forest  ...

  7. PAT 1118 Birds in Forest [一般]

    1118 Birds in Forest (25 分) Some scientists took pictures of thousands of birds in a forest. Assume ...

  8. 1118 Birds in Forest (25 分)

    Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...

  9. PAT 1118 Birds in Forest

    Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...

随机推荐

  1. Spring源码学习(总)

    前文: ------------------------------------------------------------------------------------------------ ...

  2. stl本子

    记事本,不要想到奇怪的地方去 迭代器什么的不会玩quq set: #include<set> set<int> quq; quq.insert(qvq); -- 插入 quq. ...

  3. CF613E Puzzle Lover

    题意 英文版题面 Problems Submit Status Standings Custom test .input-output-copier { font-size: 1.2rem; floa ...

  4. oracle数据库丢失数据文件、控制文件、重做日志文件、初始化文件恢复方法

    rman  target/ list backup; 查看是否已备份,如果没有,那就不知道了 模拟故障,删除/u01/app/oracle/oradata/ORCL文件夹下的所有文件 sqlplus ...

  5. 有用的proc文件系统文件

    1. /proc/iomem I/O内存映射 2. /proc/meminfo 系统内存信息

  6. Terraform Detecting Drift

    转自:https://www.terraform.io/docs/extend/best-practices/detecting-drift.html 这篇文章主要说明了对于资源如何处理 read&a ...

  7. 使用kompose 快速转换dokcer-compose 文件为k8s deploy 文件

    kompose 是一个不错的快速转换docker-compose 文件为k8s 部署yaml文件的工具,使用次工具我们 可以将简单的docker-compose文件,转换为复杂的yaml文件,对于使用 ...

  8. 移除元素(remove,remove_if...unique...)

    remove 因为本算法作用的是iterator,所以并不会改变Container大小,会返回一个新的iterator new_last,是的first到new_last中的元素都不等于value,左 ...

  9. HI3518EV200 mpp分析

    . Sample Program File Structure sample # MPP sample program |-- common # Common function used by the ...

  10. 配置hive元数据数据库

    <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <v ...