1319 連通網路的操作次數

2022-02-08 03:08:26 字數 1524 閱讀 3084

1319

. 連通網路的操作次數

用乙太網線纜將 n 臺計算機連線成乙個網路,

計算機的編號從

0 到 n-1。線纜用 connections 表示,

其中 connections[i] =[a, b] 連線了計算機 a 和 b。

網路中的任何一台計算機都可以通過網路直接

或者間接訪問同乙個網路中其他任意一台計算機。

給你這個計算機網路的初始佈線 connections,

你可以拔開任意兩台直連計算機之間的線纜,

並用它連線一對未直連的計算機。

請你計算並返回使所有計算機都連通所需的

最少操作次數。如果不可能,則返回 -1。

示例 1

:輸入:n = 4, connections = [[

0,1],[0,2],[1,2

]]輸出:

1解釋:拔下計算機

1 和 2 之間的線纜,並將它插到計算機 1 和 3

上。示例 2:

輸入:n = 6, connections = [[

0,1],[0,2],[0,3],[1,2],[1,3

]]輸出:

2示例 3:

輸入:n = 6, connections = [[

0,1],[0,2],[0,3],[1,2

]]輸出:-1

解釋:線纜數量不足。

示例 4

:輸入:n = 5, connections = [[

0,1],[0,2],[3,4],[2,3

]]輸出:01

<= n <= 10^5

1<= connections.length <= min(n*(n-1)/2, 10^5

)connections[i].length == 2

0<= connections[i][0], connections[i][1] connections[i][

0] != connections[i][1

]沒有重複的連線。

兩台計算機不會通過多條線纜連線。

//

並查集模板

class

unionfind

int findset(int

x)

bool unite(int x, int

y)

if(size[x] parent[y] =x;

size[x] +=size[y];

--setcount; //

在這裡統計的連通分量個數

return

true

; }

bool connected(int x, int

y)

};class

solution

unionfind uf(n);

for(const auto&conn:connections)

return uf.setcount-1

; }

};

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。網路中的任何一台計算機都可以通過網路直接或者間接訪問同乙個網路中其他任意一台計算機。給你...

LeetCode1319 連通網路的操作次數

分析 線的數量就是connections的值,而連線n臺計算機至少需要 n 1條線。判斷是否重複連線,只需判斷兩台計算機是否已經在同乙個網路中。如果已經相連,則把線取下。1.遍歷整個connections 2.計算有多少個集合,以及有多少剩餘的線 3.集合數量 1即為最少操作次數,與剩餘的線的數量進...