【1118】Birds in Forest (25 分)

简介: 【1118】Birds in Forest (25 分)【1118】Birds in Forest (25 分)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
using namespace std;  
//key:并查集,注意不同照片可能是同一棵树==
//exist[i]表示鸟的id---i在输入的鸟的序号里面是否出现过
//cnt[i]数组保存以i为FindFather结点的集合里鸟的个数
int n,m,k;
const int maxn=10010;
int father[maxn]={0},cnt[maxn]={0};
//cnt[i]数组保存以i为FindFather结点的集合里鸟的个数
int  findFather(int x){  //查找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){ //合并a和b所在的集合
  int faA=findFather(a);
  int faB=findFather(b);
  if(faA != faB){
    father[faA]=faB;
  }
}
bool exist[maxn];
//exist[i]表示鸟的id---i在输入的鸟的序号里面是否出现过
int main(){   
  scanf("%d",&n);
  for(int i=1;i<=maxn;i++)
    father[i]=i;
  int id,temp;
  for(int i=0;i<n;i++){
    scanf("%d%d",&k,&id);//id为此画第一只鸟
    exist[id]=true;
    for(int j=0;j<k-1;j++){//遍历剩下的k-1只鸟
      scanf("%d",&temp);
      Union(id,temp);//并
      exist[temp]=true;
    }
  }
  for(int i=1;i<=maxn;i++){
    if(exist[i]==true){
      int root=findFather(i);
      cnt[root]++;
      //cnt[i]数组保存以i为FindFather结点的集合里鸟的个数
    }
  }
  int numTrees=0,numBirds=0;
  for(int i=1;i<=maxn;i++){
    if(exist[i] == true&& cnt[i] != 0){//前者省去也可ac
      numTrees++;
      numBirds+=cnt[i];
    }
  }
  printf("%d %d\n",numTrees,numBirds);
  scanf("%d",&m);
  int ida,idb;
  for(int i=0;i<m;i++){
    scanf("%d%d",&ida,&idb);
    printf("%s\n",(findFather(ida) == findFather(idb)) ? "Yes": "No");//学习此写法
  }
  system("pause");
    return 0;   
}
相关文章
|
6月前
|
机器学习/深度学习 数据采集 算法
随机森林(Random Forest)
随机森林(Random Forest)是一种集成学习方法,它通过构建多个决策树并将它们的预测结果综合起来来提高模型的预测性能。随机森林是一种非常强大的机器学习算法,可以用于分类和回归问题。它具有较高的准确性和鲁棒性,能够处理大规模数据集和缺失数据,并且不容易过拟合。
134 2
|
机器学习/深度学习 运维 算法
孤立随机森林(Isolation Forest)(Python实现)
孤立随机森林(Isolation Forest)(Python实现)
313 0
|
机器学习/深度学习 数据采集 运维
Random Forest
首届世界科学智能大赛:生命科学赛道——生物学年龄评价与老年病风险预测
123 0
|
数据可视化
Forest plot(森林图) | Cox生存分析可视化
Forest plot(森林图) | Cox生存分析可视化
285 0
|
机器学习/深度学习 移动开发 算法
随机森林 Random Forest
随机森林 Random Forest
|
机器学习/深度学习 存储 算法
YOLOv5的Tricks | 【Trick7】指数移动平均(Exponential Moving Average,EMA)
这篇博客主要用于整理网上对EMA(指数移动平均)的介绍,在yolov5代码中也使用了这个技巧,现对其进行归纳。
1755 1
YOLOv5的Tricks | 【Trick7】指数移动平均(Exponential Moving Average,EMA)
|
机器学习/深度学习 计算机视觉
LBP+GLCM+SVM对开源数据集kth_tips_col_200x200进行简单分类
LBP+GLCM+SVM对开源数据集kth_tips_col_200x200进行简单分类
545 0
LBP+GLCM+SVM对开源数据集kth_tips_col_200x200进行简单分类
|
机器学习/深度学习
【计算理论】计算复杂性 ( 3-SAT 是 NP 完全问题 | 团问题是 NP 完全问题 | 团问题是 NP 完全问题证明思路 )
【计算理论】计算复杂性 ( 3-SAT 是 NP 完全问题 | 团问题是 NP 完全问题 | 团问题是 NP 完全问题证明思路 )
487 0
【计算理论】计算复杂性 ( 3-SAT 是 NP 完全问题 | 团问题是 NP 完全问题 | 团问题是 NP 完全问题证明思路 )
【1025】PAT Ranking (25 分)
【1025】PAT Ranking (25 分) 【1025】PAT Ranking (25 分)
104 0
【1029】Median (25 分)
【1029】Median (25 分) 【1029】Median (25 分)
116 0