分析:線的數量就是connections的值,而連線n臺計算機至少需要 n - 1條線。判斷是否重複連線,只需判斷兩台計算機是否已經在同乙個網路中。如果已經相連,則把線取下。
1.遍歷整個connections
2.計算有多少個集合,以及有多少剩餘的線
3.集合數量-1即為最少操作次數,與剩餘的線的數量進行比較即可
int
makeconnected()
}return
(線的數量 >= 集合數量 -
1 ? 集合數量 -1:
-1);
}
具體**:
static
int*
initialize
(int size)
//用這種方式初始化時並未注意到set[i] = 0是非法的,應該是(*set)[i] = 0.
//所以,盡量避免使用多維指標,使用多維指標時一定要格外警惕。
static
void
initialize
(int
**set,
int size)
static
intfind
(int
*set,
int x)
static
void
set_union
(int
*set,
int p,
int q)
}inline
static bool isconnected
(int
*set,
int p,
int q)
intmakeconnected
(int n,
int*
* connections,
int connectionssize,
int* connectionscolsize)
int opration = n -1;
return
(opration <= rest ? opration :-1
);}
反思:使用二維指標初始化時未注意到這是二維指標,能使用低維指標盡量使用低維指標。 1319 連通網路的操作次數
1319 連通網路的操作次數 用乙太網線纜將 n 臺計算機連線成乙個網路,計算機的編號從 0 到 n 1。線纜用 connections 表示,其中 connections i a,b 連線了計算機 a 和 b。網路中的任何一台計算機都可以通過網路直接 或者間接訪問同乙個網路中其他任意一台計算機。給...
1319 連通網路的操作次數 並查集
用乙太網線纜將 n 臺計算機連線成乙個網路,計算機的編號從 0 到 n 1。線纜用 connections 表示,其中 connections i a,b 連線了計算機 a 和 b。網路中的任何一台計算機都可以通過網路直接或者間接訪問同乙個網路中其他任意一台計算機。給你這個計算機網路的初始佈線 co...
1319 連通網路的操作次數 並查集
1319.連通網路的操作次數 用乙太網線纜將 n 臺計算機連線成乙個網路,計算機的編號從 0 到 n 1。線纜用 connections 表示,其中 connections i a,b 連線了計算機 a 和 b。網路中的任何一台計算機都可以通過網路直接或者間接訪問同乙個網路中其他任意一台計算機。給你...