題目描述:某省調查城鎮交通狀況,得到現有城鎮道路統計表,表中列出了每條道路直接連通的城鎮。省**「暢通工程」的目標是使全省任何兩個城鎮間都可以實現交通(但不一定有直接的道路相連,只要互相間接通過道路可達即可)。問最少還需要建設多少條道路?
輸入:
注意:兩個城市之間可以有多條道路相通,也就是說
3 31 2
1 22 1
這種輸入也是合法的
當n為0時,輸入結束,該用例不被處理。
輸出:對每個測試用例,在1行裡輸出最少還需要建設的道路數目。
樣例輸入:
4 21 34 3
3 31 2
1 32 3
5 21 2
3 5999 0
0
樣例輸出:
102998
1 #include //1526
2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include
11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20
21using
namespace
std;
2223
2425
26const
int max = 100005;27
28int
pre[max];
2930
intans;
3132
3334
35int find(int
x)36 48
49return
r;50}51
void merge(int x,int
y)5260}
6162
intmain()
6381 ans--;
82 cout84 }
題目1012 暢通工程
這道題如果不用並查集感覺根本無從下手,可以將題目理解為 如果兩點之間有路徑,那麼與他們連線的其他結點也就貫通了,即可以歸屬於同乙個集合,關於並查集方法的敘述,有一篇部落格講的很好 include using namespace std int tree 1000 int findroot int x...
九度 題目1012 暢通工程
這題我是以連通域來做的,n個點至少需要n 1個邊才能連通。如果形成迴路,則相當於有這條邊浪費了,沒有任何價值。最終至少還需要多少邊才能把所有的城鎮聯通,也就是求剩下的孤立的點和連通域之間還需要幾條邊才能連通!比如 最後利用程式求得3個連通域和2個孤立的點,那麼至少需要3 2 1 5條邊才能全部連通 ...
九度 1012 暢通工程
題目描述 某省調查城鎮交通狀況,得到現有城鎮道路統計表,表中列出了每條道路直接連通的城鎮。省 暢通工程 的目標是使全省任何兩個城鎮間都可以實現交通 但不一定有直接的道路相連,只要互相間接通過道路可達即可 問最少還需要建設多少條道路?輸入測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分...