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

2022-06-12 11:51:10 字數 1152 閱讀 8020

1319. 連通網路的操作次數

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

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

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

我的第一反應是先將所有已知邊連線起來,然後對每一條邊檢查是否為冗餘邊,是的話就使用它連線後面未連線的邊。

class

uf

int find(int

x)

void un(int x, int

y)

bool rest(int x, int

y)

int connect(int

n) }

return -1

; }

//找出不連通的點

void show(int

n)};

class

solution

int ans=0

;

for(int i=0;i)}}

if(union.connect(n)==-1)return

ans;

return -1

; }

};

但其實沒有必要這樣做, 因為我們只需要知道乙個移動次數。乙個n個結點的圖至少需要n-1條邊才可以連通,並且最小移動次數=連通分量數-1

class

solution

void un(int x, int

y)

else

}//void un(int x, int y)

int makeconnected(int n, vectorint>>&connections)

}return part-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即為最少操作次數,與剩餘的線的數量進...