1319 連通網路的操作次數 並查集

2022-05-25 05:15:12 字數 764 閱讀 1821

用乙太網線纜將 n 臺計算機連線成乙個網路,計算機的編號從 0 到 n-1。線纜用 connections 表示,其中 connections[i] = [a, b] 連線了計算機 a 和 b。

網路中的任何一台計算機都可以通過網路直接或者間接訪問同乙個網路中其他任意一台計算機。

給你這個計算機網路的初始佈線 connections,你可以拔開任意兩台直連計算機之間的線纜,並用它連線一對未直連的計算機。請你計算並返回使所有計算機都連通所需的最少操作次數。如果不可能,則返回 -1 。

什麼時候返回-1?

當邊數小於點數的時候,必返回-1

否則,返回圖中連通分量的數目-1即可

class solution 

return fa[x] == x ? fa[x] : fa[x] = find(fa[x]);

}bool same(int x, int y)

void merge(int x, int y)

if (rank[xx] < rank[yy])

cnt--;

rank[xx] += rank[yy];

fa[yy] = xx;

}int makeconnected(int n, vector>& connections)

for (int i = 0; i < connections.size(); i++)

return cnt - 1;

}};

1319 連通網路的操作次數 並查集

1319.連通網路的操作次數 用乙太網線纜將 n 臺計算機連線成乙個網路,計算機的編號從 0 到 n 1。線纜用 connections 表示,其中 connections i a,b 連線了計算機 a 和 b。網路中的任何一台計算機都可以通過網路直接或者間接訪問同乙個網路中其他任意一台計算機。給你...

1319 連通網路的操作次數

1319 連通網路的操作次數 用乙太網線纜將 n 臺計算機連線成乙個網路,計算機的編號從 0 到 n 1。線纜用 connections 表示,其中 connections i a,b 連線了計算機 a 和 b。網路中的任何一台計算機都可以通過網路直接 或者間接訪問同乙個網路中其他任意一台計算機。給...

LeetCode1319 連通網路的操作次數

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