java 历届试题 合根植物

问题描述
w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。
  这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。


  如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?
输入格式
第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。
  接下来一行,一个整数k,表示下面还有k行数据(0<k<100000)
  接下来k行,第行两个整数a,b,表示编号为a的小格子和编号为b的小格子合根了。


  格子的编号一行一行,从上到下,从左到右编号。
  比如:5 * 4 的小格子,编号:
  1 2 3 4
  5 6 7 8
  9 10 11 12
  13 14 15 16
  17 18 19 20
样例输入
5 4
16
2 3
1 5
5 9
4 8
7 8
9 10
10 11
11 12
10 14
12 16
14 18
17 18
15 19
19 20
9 13
13 17
样例输出
5
样例说明
其合根情况参考下图

采用并查集的方法:

import java.util.Scanner;  
import java.util.HashSet;   
import java.util.Set;  
public class Main {  static int []head;  public static void main(String[] args) {  //并查集  Scanner s=new Scanner(System.in);  int m=s.nextInt();  int n=s.nextInt();  int k=s.nextInt();  head=new int [m*n];  for(int i=0;i<m*n;i++)  head[i]=i;  int a,b;  for(int i=0;i<k;i++)  {  a=s.nextInt()-1;  b=s.nextInt()-1;  u(a,b);  }  Set<Integer> set=new HashSet<Integer>();  for(int i=0;i<m*n;i++)  {  set.add(f(i));  }  System.out.println(set.size());  }   private static void u(int a, int b) {  if(f(a)==f(b))  return;  head[f(a)]=f(b);  }  private static int f(int i)  {  if(head[i]==i)  return i;  return head[i]=f(head[i]);  }  }  


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

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

相关文章

U66785 行列式求值

二更&#xff1a;把更多的行列式有关内容加了进来&#xff08;%%%%%Jelly Goat奆佬&#xff09; 题目描述 给你一个N(n≤10n\leq 10n≤10)阶行列式&#xff0c;请计算出它的值 输入输出格式 输入格式&#xff1a; 第一行有一个整数n 在以下n行中&#xff0c;每行有n个整数&…

(软件工程)用例说明模板

在画完用例图后&#xff0c;往往需要为图中的用例写用例说明&#xff0c;使得这些用例更加的清楚&#xff0c;流程更加完整 其中一种用例说明的模板如下&#xff1a; 用例编号&#xff1a;用例名称&#xff1a;&#xff08;跟用例图一致&#xff09;执行者&#xff1a;用例说明…

蓝桥杯(java)基础练习 龟兔赛跑

问题描述话说这个世界上有各种各样的兔子和乌龟&#xff0c;但是研究发现&#xff0c;所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛&#xff0c;小华对此很感兴趣&#xff0c;于是决定研究不同兔子和乌龟的赛跑。他发现…

$.ajax的标准写法

var baseurl "http://" //后台的url $.ajax({ url:baseurl"后台的接口", //请求的url地址 dataType:"json", //返回格式为json async:true,//请求是否异步&#xff0c;默认为异步&#xff0c;这也是ajax重要特性 data:{ //这里是…

(软件项目管理)项目会议纪要模板

备注&#xff1a; 七: 1、报送&#xff1a;把整理好的会议的内容报给上级的相关部门。2、主送&#xff1a;把整理好的会议的内容发放给下级相关部门。3、抄送&#xff1a;把整理好的会议的内容送给相关的同级单位或不相隶属的单位。

(软件测试)代码覆盖(语句覆盖,分支覆盖,条件覆盖,条件组合覆盖,路径覆盖)

一、概念 语句覆盖/代码行覆盖&#xff1a;目标☞保证程序中每一条语句最少执行一次&#xff0c;其覆盖标准无法发现判定中逻辑运算的错误&#xff1b; 判定覆盖/分支覆盖&#xff1a;是指选择足够的测试用例&#xff0c;使得运行这些测试用例时&#xff0c;每个判定的所有可能…

js 字符串,数组扩展

console.log(Array.prototype.sort)//ƒ substring() { [native code] }console.log(String.prototype.substring)//字符串扩展String.prototype.addstring function(){return this字符串扩展}console.log(ff.addstring())//ff字符串扩展转载于:https://www.cnblogs.com/whlBo…

DecimalFormat 用法

DecimalFormat含义用法 ①DecimalFormat 是 NumberFormat 的一个具体子类&#xff0c;用于格式化十进制数字。 ②该类设计有各种功能&#xff0c;使其能够分析和格式化任意语言环境中的数&#xff0c;包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数&#x…

EVE-NG安装步骤

首先&#xff0c;需要EVE-NG客户端工具包 1、 1.1部分图 点击next 2、 保持默认全选&#xff0c;点击next 3、 点击install 4、选择I accept the agreement&#xff0c;点击next 5、下一步&#xff0c;继续点击next 6、选定安装位置&#xff0c;不清楚就默认C盘&#x…

第三次实验

Part1: 验证性内容 在循环中使用控制语句continue和break&#xff0c; 其功能区别是什么&#xff1f; continue是停止当前语句的执行&#xff0c;回到第一条语句继续执行&#xff0c;而break是直接结束循环。 在两层嵌套循环中&#xff0c;内层循环中如果出现continue&#xf…

vim命令杂烩(复制粘贴、建文件、撤销等)

vim 有底线命令&#xff0c;插入&#xff0c;命令方式&#xff0c;在进行复制、撤销等操作时&#xff0c;文件应处于命令方式&#xff0c; 若处于编辑模式&#xff0c;可点击ESC&#xff0c;再进行操作 一、撤销 点击 u , 撤销上一步 二、粘贴 p 三、复制 yy复制游标所…

vim三种模式

看到这个文章&#xff0c;觉得讲得很好 Vim和Vi一样具有三种模式&#xff1a;命令模式&#xff08;Command mode&#xff09;&#xff0c;插入模式&#xff08;Insert mode&#xff09;和底线命令模式&#xff08;Last line mode&#xff09;。 当用户处于不同模式的时候&…

print的小白用法

print的用法 print函数概述&#xff1a;print() 方法用于打印输出&#xff0c;是python中最常见的一个函数。 参数如下所示&#xff1a;print(*objects, sep , end\n, filesys.stdout) 参数的具体含义如下&#xff1a; objects --表示输出的对象。输出多个对象时&#xff0c;需…

Linux shell 中$() ` `,${},$[] $(()),[ ] (( )) [[ ]]作用与区别

看到几篇博客&#xff0c;觉得写的不错 原文&#xff1a;https://blog.csdn.net/x1269778817/article/details/46535729 和http://blog.zol.com.cn/2322/article_2321763.html $()和 &#xff1a; 在 bash shell 中&#xff0c;$( ) 与 (反引号) 都是用来做命令替换用(c…

[转]动态规划DP的分类

链接地址&#xff1a;http://www.cnblogs.com/Renyi-Fan/p/9285495.html 转载于:https://www.cnblogs.com/zifeiy/p/10716445.html

Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍

Shell中的特殊字符有 1、$ 美元符 2、\ 反斜杠 3、 反引号 4、" 双引号 5、< ,>;,*,?,[,] 下面我一一举列说明 一、$符号 1、echo $? 显示的是上一条指令退出状态 2、echo "$?" 效果同上 3、echo $? 显示的是$? 4、echo \$? 显示的是$?…

WPF编程,将控件所呈现的内容保存成图像的一种方法。

WPF编程&#xff0c;将控件所呈现的内容保存成图像的一种方法。 原文:WPF编程&#xff0c;将控件所呈现的内容保存成图像的一种方法。版权声明&#xff1a;我不生产代码&#xff0c;我只是代码的搬运工。 https://blog.csdn.net/qq_43307934/article/details/87278138 实现只对…

Linux shell脚本中shift的用法说明

原文&#xff1a;https://blog.csdn.net/zhu_xun/article/details/24796235 shift命令用于对参数的移动(左移)&#xff0c;通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理&#xff08;常见于Linux中各种程序的启动脚本&#xff09;。 示例1:依次读取…

$0,$#,$@,$+特殊符号的含义,shell的传递参数

$n。n 代表一个数字&#xff0c;1 为执行脚本的第一个参数&#xff0c;2 为执行脚本的第二个参数&#xff0c;以此类推……$0 为执行的文件名 echo "执行的文件名&#xff1a;$0"; echo "第一个参数为&#xff1a;$1"; echo "第二个参数为&#xff1a…

二维数组(声明以及遍历)

首先图面理解二维数组&#xff08;数组里面的元素不是字符或者数字类型而是另外一个数组&#xff09;! 一&#xff0c;二维数组的声明 int[ ] [ ] arr; 初始化一个能存3个一维数组的二维数组 arr new int [3] [ ]; (此时只声明了一个二维数组的空间&#xff0c;并没有声明一维…