Problem Description
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?

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
分析:并查集的简单应用,他问还需要建设多少条路径才能联通,也就是计算总共的最少道路-已经建设的道路。这里需要过滤的就是已经建设的道路是否有重复的情况,如果有重复的道路就不加1,判断是由有重复的关键就是判断两个点所在的树的根节点是否相同,如果相同,那么就不做任何操作,如果不同,将两棵树合并并且道路加一。
详细代码如下:(问题比较简单,没有考虑小数插大树,优化查找根节点等等)

import java.util.Scanner;public class 杭电1232 {static int value=0;//表示当前已经连接的城镇数static int a[]=new int [1001];public static void main(String[] args) {    Scanner sc = new Scanner(System.in);         while(sc.hasNext()){int n=sc.nextInt();//城镇个数a=new int[n 1];if(n==0)break;int m=sc.nextInt();//道路个数for(int i=0;i<m;i  ){int a1=sc.nextInt();//两个城镇int a2=sc.nextInt();union(a1,a2);}System.out.println(n-1-value);           value=0;}}private static void union(int a1, int a2) {int q1=search(a1);int q2=search(a2);if(q1==q2){}//如果根相等,那么什么都不做else{value  ;a[q2]=q1;//a2指向a1先不考虑优化a[q1]--;}}private static int search(int a1) {if(a[a1]<=0) {return a1;}elsereturn search(a[a1]);        }
}

本人小白,复杂度和内存优化的都不够好。

杭电1232 畅通工程相关推荐

  1. 杭电1232畅通工程

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. 杭电1874畅通工程续

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. 杭电1863畅通工程

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. 杭电1874畅通工程绪

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

  6. HDU 1232畅通工程

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. HDU 1232 - 畅通工程

    畅通工程 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只 ...

  8. [ACM] hdu 1232 畅通工程(并查集)

    Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...

  9. hdu 1232 畅通工程

    Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...

最新文章

  1. vmware占用c盘空间_W7 64位装系统,硬盘全部都格式化和分区了,系统装上后C盘占了40G,这是怎么回事?...
  2. centos 7下独立的python 2.7环境安装
  3. 在Android界面上显示和获取Logcat日志输出
  4. Rabbit寻宝记(1)
  5. SAP UI5 myTask setBindingContext in SAP Fiori application
  6. tgp饥荒 服务器无响应,tgp饥荒联机版缺少fmod_event.dll文件怎么办?具体解决方法介绍...
  7. 解决vlc-android播放http视频退出问题
  8. 综述 | 卷积神经网络表征可视化研究
  9. GCF(1)---How to modify PICS according to FGI bits UE reported
  10. Spring(一):简介
  11. 逆向工程平台 Radare2
  12. 统计计算函数练pandas
  13. NIS 病毒库 更新 地址
  14. 3G是IPv6的3G(转)
  15. 安卓Activity劫持与反劫持
  16. iPad协议 一键转发 群发消息 获取群二维码 清理僵尸粉V:viplac
  17. 雷达(微波)感应天线设计
  18. VISTA下载全集(下)
  19. Debezium同步之DB2数据到Kafka的同步
  20. 基于双语数据集搭建seq2seq模型

热门文章

  1. 【Python植物大战僵尸军团来袭】“大家快醒一醒、一大波僵尸来了”
  2. Linux内核编码风格
  3. [reference]-Features_in_A-profile
  4. 时间戳服务——信息安全(二)
  5. 认证篇——消息认证码
  6. solidity编码规范
  7. 查看java返回的值,JavaScript 遍历对象查找指定的值并返回路径
  8. Re题目------Enm.exe
  9. 13、不同存储引擎的数据表在文件系统里是如何表示的?
  10. 1.15 Java 9新增的不可变集合