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

并查集合并

#include<iostream>
using namespace std;
const int MAX = 10010;
int father[MAX],root[MAX];
int findfather(int x){if(x==father[x]) return x;else{int F=findfather(father[x]);father[x]=F;return F;}
}
void Union(int a , int b){int faA=findfather(a);int fbB=findfather(b);if(faA!=fbB){father[faA]=fbB;} 
}
void init(){for(int i=0;i<MAX;i++){father[i]=i;root[i]=0;}
} 
int n,q;
int main(){init();cin>>n;int maxbirds=0; for(int i=0;i<n;i++){int nbirds,firstbird;scanf("%d%d",&nbirds,&firstbird);if(firstbird>maxbirds) maxbirds=firstbird;for(int j=1;j<nbirds;j++){int bird;scanf("%d",&bird);if(bird>maxbirds) maxbirds=bird;Union(firstbird,bird);}}int trees=0;for(int i=1;i<=maxbirds;i++){int fa=findfather(i);root[fa]++;if(root[fa]==1) trees++;}printf("%d %d\n",trees,maxbirds);cin>>q;while(q--){int a , b;scanf("%d%d",&a,&b);if(findfather(a)==findfather(b)) printf("Yes\n");else printf("No\n");}
}

非递归压缩并查集

int father[MAX];  
bool isRoot[MAX];//判根  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[faA] = faB;  }  
}  void init( int n ) {  for( int i = 1; i <= n; i++ ) {  //从1开始father[i] = i;  isRoot[i] = false;  }  
}  

转载于:https://www.cnblogs.com/demian/p/6102945.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

斯坦福计算机录取难吗,申请斯坦福究竟有多难? 什么样条件的人才能被斯坦福录取?斯坦福大学直播!...

原标题&#xff1a;申请斯坦福究竟有多难&#xff1f; 什么样条件的人才能被斯坦福录取&#xff1f;斯坦福大学直播&#xff01;申请斯坦福究竟有多难&#xff1f; 什么样条件的人才能被斯坦福录取&#xff1f;斯坦福大学直播&#xff01;西海岸小哈佛之称的斯坦福大学&#xf…

解决:building 'twisted.test.raiser' extension安装scrapy报错

解决&#xff1a;building twisted.test.raiser extension error: Microsoft Visual C 14.0 is required. Get it with "Microsoft Visual C Build Tools": https://visualstudio.microsoft.com/downloads/ 安装scrapy报错&#xff0c;在Twisted安装部分 解决方案…

Linux配置网络出现Eroor adding default gateway的解决方案

最近在学习有关大数据方面的东西&#xff0c;刚开始要搭建模拟的虚拟机集群。用的是Minimal CentOS6.7版本Linux下的系统。因为我要为各个虚拟机设置静态IP&#xff0c;所以就参考网上博客说的进行如下操作: 一、安装完系统后先配置网络&#xff1a; cd /etc/sysconfig/netwo…

揭秘8大自媒体平台注册方法,通过率百分之九十

写在前面&#xff1a;准备材料&#xff1a;手机号&#xff0c;邮箱&#xff0c;手持照&#xff0c;辅助材料(非必选项)&#xff0c;邀请码(非必选项)。辅助材料万能公式&#xff1a;方法①新浪博客16级博客发8篇相关的文章&#xff0c;昵称、描述、头像都与所注册自媒体号对应&…

AC日记——简单密码 openjudge 1.7 10

10:简单密码 总时间限制: 1000ms内存限制: 65536kB描述Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符&#xff0c;将它用它字母表中后5位对应的字符来代替&#xff0c;这样就得到了密文。比如字符A用F来代替。如下是密文和明文中字符的对应关系。密文A B C D…

计算机表格怎么求面积,在wps表格中怎么把数据生成面积图?

面积图强调数量随时间而变化的程度&#xff0c;适用于显示有限数量的若干组数据。可以利用面积图来分析销售的数据。在这里我用3种品牌的手提电脑在 2010年四个季度的销售量作为数据源&#xff0c;使用“堆积面积图”来显示各种手提电脑销售量所占大小并随时间变化的趋势。那么…

机器学习如何解决问题

原文 http://tech.meituan.com/mt-mlinaction-how-to-ml.html 前言 前言 随着大数据时代的到来&#xff0c;机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术界&#xff0c;机器学习都是一个炙手可热的方向&#xff0c;但是学术界和工业界对机器学习的研究…

Linux中python2和python3的pip设置 及清华安装源

启动python2&#xff0c;我们可以直接在命令行输入&#xff1a;python2 启动python3&#xff0c;我们可以在命令行输入&#xff1a;python或者python3. 但是pip没有设置的话&#xff0c;在命令行输入 pip --version 或者 pip2 --version&#xff0c;指向的都是python2. 现在…

java 循环 基本类型

1.基本if选择结构 格式&#xff1a;if&#xff08;布尔表达式&#xff09;{ 表达式结果为true&#xff0c;则执行此代码块 } 例&#xff1a;if(week <5 ){ System.out.println(“上班”) } 2.if else结构 格式&#xff1a;if(布尔表达式){ 表达式结果为true&#xff0c;则执…

CodePlex关闭,建议迁移至GitHub

Microsoft决定停止提供CodePlex开源项目免费托管服务。他们建议开发人员可以迁移到GitHub或任何其他托管服务提供商。\\尽管有些人希望CodePlex关闭的消息仅仅是4月1日愚人节玩笑&#xff0c;但是Microsoft副总裁Brian Harry已经证明这并不是一个玩笑。在提供服务11年之后&…

计算机最佳参数,对使用者来说,学会计算机性能参数提取,给出性能评价很重要...

对计算机进行系统信息提取&#xff0c;并且给出性能评价&#xff0c;可以这样做先看思维导图&#xff1a;对计算机进行系统信息提取&#xff0c;并且给出性能评价&#xff0c;可以通过软件测试实现&#xff01;一、 关于硬件健康的问题&#xff0c;避免买到二手配件。硬盘的使用…

word如何在任意页开始添加页码

第一步&#xff0c;将光标定位到需要插入页码的前一页末尾。就是说&#xff0c;如果你想从第二页开始添加页码&#xff0c;那么你就将光标定位到第一页末尾&#xff0c;如图&#xff1a; 然后按照图中标出的提示&#xff0c;选择“页面布局”选项卡&#xff0c;点击“分隔符…

跨越请求,关于后端session会话丢失的解决办法(转载)

目前使用前后端分离的模式开发&#xff0c;后端提供跨域接口、前端jsonp调用&#xff0c;绑定数据&#xff0c;但是在该站点下有个人中心模块存在的情况下&#xff0c;服务端的session会话会被跨域请求覆盖改掉 大家都知道tomcat使用cookie中jsessionid来区分客户端session会话…

融云通讯服务器,vue使用融云即时通讯,老是报了发送失败,服务器超时

created() {//建立连接RongIMLib.RongIMClient.init("lmxuhwagl5ukd"); //这是关键点&#xff0c;需要填写appkey lmxuhwagl5ukdthis.StatusListener();this.getUser()},method&#xff1a;{//下面是建立连接的StatusListener(){//RongIMLib.RongIMCli…

Mongodb基本使用方法

一、操作mongodb数据库 1、创建数据库 语法&#xff1a;use 数据库名 注意&#xff1a;如果数据库不存在则创建数据库&#xff0c;否则切换到指定的数据库 注意&#xff1a;如果刚刚创建的数据库不在列表内&#xff0c;如果要显示它&#xff0c;我…

Device eth0 does not seem to be present,delaying initialization的解决办法

最近由于重装了操作系统导致之前配置好的集群出现了问题&#xff0c;需要修正一下&#xff0c;在刚开始为NameNode配置网络设置的时候&#xff0c;已经按照网上的相关步骤配置好了ifcfg-eth0文件中的内容&#xff0c;但在ifconfig时却无法观察到设置的静态IP地址&#xff0c;后…

Angularjs 动态添加指令并绑定事件

先说使用场景&#xff0c;动态生成DOM元素并绑定事件&#xff0c;非常常见的一种场景&#xff0c;用jq实现效果&#xff1a; http://jsbin.com/gajizuyuju/edit?html,js,output var count0; $("#test").on("click",function(event){if(event.target.tagNa…

css标签resolution,html/css to fit all screen resolution

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效&#xff0c;请关闭广告屏蔽插件后再试):问题:Im working on the website and Im trying to make it responsive to all resolutions but without success..Here is HTML:Lorem ipsum nasov je? "Lorem…

钉钉开发笔记(一)

钉钉开发分为&#xff1a;1、移动客户端。2、PC端。3、服务端。三个平台的开发。 1、移动端&#xff1a;面对钉钉手机用户和企业用户。 2、同上主要面向PC端的用户和企业。 3、服务端&#xff0c;用于用户和企业内部管理的平台方向&#xff0c;例如OA网站。 本人主要从事移动端…