[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.pswp.cn/news/373412.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373412.shtml
英文地址,請注明出處:http://en.pswp.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;則可能已經開始為實現相同接口的每個狀態編寫類。 一個好的設計可…