[HDU1232] 畅通工程 (并查集 or 连通分量)

Input

测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。 
注意:两个城市之间可以有多条道路相通,也就是说
3 3
1 2
1 2
2 1
这种输入也是合法的
当N为0时,输入结束,该用例不被处理。 

 

Output

对每个测试用例,在1行里输出最少还需要建设的道路数目。 

 

Sample Input

4 2
1 3
4 3
3 3
1 2
1 3
2 3
5 2
1 2
3 5
999 0
0

 

Sample Output

1
0
2
998
这题是一个很经典的并查集题目了,也是最基础的了,当做学习~
import java.util.Scanner;public class Main {public static int[] parent;public static boolean[] root;public static int find(int x){int top = x;
//找出顶层父节点
while(parent[top] != top){top = parent[top];}//减少深度,路径压缩int c2 = x; int temp;while(c2!=top){temp = parent[c2];parent[c2] = top;c2 = temp;}return top;}public static void union(int x,int y){int fx = find(x);int fy = find(y);
//如果不是同一顶层父节点则随机一个联合
if(fx != fy){parent[fy] = fx;}}public static void main( String[] args ) {Scanner sc = new Scanner(System.in);int n,m;while(sc.hasNext()){int answer=0;n = sc.nextInt();if(n==0) return ;m = sc.nextInt();parent = new int[n+1];root = new boolean[n+1];for(int i=1;i<=n;i++){parent[i] = i;}for(int i=0;i<m;i++){union( sc.nextInt(), sc.nextInt() );}for(int i=1;i<=n;i++){root[find( i )] = true;}for(int i=1;i<=n;i++){if(root[i]){answer++;}}System.out.println( answer-1 );}} }

 

转载于:https://www.cnblogs.com/dick159/p/5287760.html

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

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

相关文章

java jdbc连接db2数据库_Java连接db2数据库(常用数据库连接五)

1.安装好db2数据库&#xff0c;并建立表如下&#xff1a;2.eclipse或myeclipse中建立工程并导入java连接db2所需要的jar包db2java.jar 下载地址&#xff1a;http://download.csdn.net/detail/whzhaochao/64149813.建立iConn接口&#xff0c;代码如下&#xff1a;package com.zh…

在Windows上,迁移VisualSVN server

最近在搭建自动化测试框架&#xff0c;顺便了解了一下SVN的搭建。对于一般的使用场景&#xff0c;VisualSVN还是挺方便的&#xff0c;而且上手特别快。 由于是第一个demo&#xff0c;后期要迁移到其他服务器上面&#xff0c;所以就熟悉了一下server的迁移。以下是一些记录信息&…

练习脚本三:日志清除

日志清除 #!/bin/bash #清除日志脚本&#xff0c;版本2 LOG_DIR/var/logROOT_UID0 #$UID为0的时候&#xff0c;用户才具有root用户的权限#判断是否使用root用户来运行 if [ "$UID" -ne "$ROOT_UID" ];thenecho "Must be root to run this script.&qu…

Oracle通过邀请Weaver和Chin推动JavaFX向前发展

我昨天发布了愚人节帖子&#xff0c;内容涉及加入NASA协助探索红色大行星。 那个帖子与事实相距不远... NASA开发的技术的所有细节都是100&#xff05;准确的。 哎呀&#xff0c;即使我辞职也是事实&#xff01; 唯一不正确的部分是我将加入的公司。 在NASA协助探索火星的工作也…

java privilege的用法_java反射--注解的定义与运用以及权限拦截

自定义注解类编写的一些规则:1. Annotation型定义为interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口.2. 参数成员只能用public或默认(default)这两个访问权修饰3. 参数成员只能用基本类型byte,short,char,int,long,float,d…

WinForm------TextEdit只能输入数字

代码: this.textEdit1.Properties.Mask.EditMask "\d"; this.textEdit1.Properties.Mask.MaskType MaskType.RegEx; 转载于:https://www.cnblogs.com/tianhengblogs/p/6093634.html

mysql使用随笔

mysql 删除语句 &#xff1a;delete from 表名 where 条件; 例如 delete from tbuserinfo where id 2;mysql 查询语句 &#xff1a;select * 列名 from 表名 where 条件;mysql 模糊查询 &#xff1a; SELECT * FROM 表名 WHERE 列名 LIKE "3%&qu…

JavaFX:创建Sprite动画

到目前为止&#xff0c;尽管我的大多数文章都涉及JavaFX属性和绑定&#xff0c;但今天我想写一讲我也致力于JavaFX运行时的另一部分&#xff1a;动画API。 在本文中&#xff0c;我将解释如何在JavaFX中编写自定义动画&#xff0c;以及如何使用这种方法为Sprite动画创建类。 &am…

java tick_Java中的Clock tick()方法

可以使用tick()Java中Clock类中的方法在所需的时间范围内舍入基本时钟的瞬间。此方法需要两个参数&#xff0c;即基本时钟和滴答的持续时间。同样&#xff0c;返回在所需持续时间内四舍五入的基本时钟时刻。演示此的程序如下所示-示例import java.time.*;public class Main {pu…

JAVA 常用框架和工具

集成开发工具&#xff08;IDE&#xff09;&#xff1a;Eclipse、MyEclipse、Spring Tool Suite&#xff08;STS&#xff09;、Intellij IDEA、NetBeans、JBuilder、JCreator JAVA服务器&#xff1a;tomcat、jboss、websphere、weblogic、resin、jetty、apusic、apache 负载均衡…

MySQL Doublewrite Buffer及业务评估

1. 关于Doublewrite Buffe的总结 Doublewrite Buffer&#xff1a;Doublewrite Buffer出现的初衷是防止buffer pool中的脏页刷新到磁盘中&#xff0c;出现部分写的问题&#xff0c;innodb页大小一般为16k&#xff0c;而Linux操作系统的block size一般为4k。这样在刷新的过程中&a…

使用UIBinder的GWT自定义按钮

这是一个有关如何在GWT上使用UIBinder创建自定义按钮的示例。 public class GwtUIBinderButton implements EntryPoint {public void onModuleLoad() {Button button new Button();button.setText("Button");button.addClickHandler(new ClickHandler(){Overridepub…

delete postman 传参_PostMan 传参boolean 类型,接口接受的值一直是false

情形&#xff1a;最近写前台页面的一个按钮&#xff0c;功能是&#xff1a;点击后切换状态&#xff0c;显示是或否。字段名称是isTest,类型是boolean 。写完接口&#xff0c;拿postMan测试&#xff0c;传参如下&#xff1a;但是后台接口接受的数据 一直是false,处理&#xff1a…

前端学PHP之文件操作

前端学PHP之文件操作 前面的话 在程序运行时&#xff0c;程序本身和数据一般都存在内存中&#xff0c;当程序运行结束后&#xff0c;存放在内存中的数据被释放。如果需要长期保存程序运行所需的原始数据&#xff0c;或程序运行产生的结果&#xff0c;就需要把数据存储在文件或数…

腾讯云CentOS6.5下安装mysql,并配置好远程访问等权限,途中遇到的问题

1.使用yum命令安装mysql [rootbogon ~]# yum -y install mysql-server 2.设置开机启动 [rootbogon ~]# chkconfig mysqld on 3.启动MySQL服务 [rootbogon ~]# service mysqld start 4.设置MySQL的root用户设置密码 [rootbogon ~]# mysql -u root mysql> select u…

休眠性能提示:脏收集效果

在使用Hibernate作为ORM开发服务器和嵌入式应用程序8年后&#xff0c;我全力以赴地寻求提高Hibernate性能的解决方案&#xff0c;阅读博客和参加会议&#xff0c;我决定与您分享这几年获得的知识。 这是更多新帖子中的第一篇&#xff1a; 去年&#xff0c;我以Devoxx的身份参加…

java runtime 异常_Java中RuntimeException和Exception

在java的异常类体系中,Error和RuntimeException是非检查型异常&#xff0c;其他的都是检查型异常。所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类不可以在不声明的情况下抛出非RuntimeException简单的说&#xff0c;非RuntimeException必要自己写catch块处…

BZOJ3130: [Sdoi2013]费用流[最大流 实数二分]

3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 960 Solved: 505[Submit][Status][Discuss]Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识。 最大流问题&#xff1a;给定一张有向图表示运输网络…

Linux Shell 003-变量

Linux Shell 003-变量 本节关键字&#xff1a;Linux、Shell、变量、全局变量、系统变量 相关指令&#xff1a;read、echo、unset、export 变量的含义 变量是用来临时保存数据的&#xff0c;该数据是可以变化的数据。如果某个内容需要多次使用&#xff0c;并且在代码中重复出现…

Java自动机实现

这篇文章将解决在Java中实现有限状态机的问题。 如果您不知道什么是FSM或在什么地方可以使用FSM&#xff0c;您可能会热衷于阅读此 &#xff0c; 这个和这个 。 如果您发现自己在设计上使用FSM的情况&#xff0c;则可能已经开始为实现相同接口的每个状态编写类。 一个好的设计可…