並查集問題

2021-09-12 12:53:19 字數 1265 閱讀 3839

輸入:第一行:城鎮數目n,道路數目m

接下的每一行表示:某條道路連線的城鎮號

輸出:至少還需要建設的道路數目,才能將所有的城鎮連線起來

例子:

輸入:

3 31 2

1 22 1

輸出:1

解釋:要使城鎮123連通,還需要修建23之間的連通路;即還需要修建一條路

//cpp實現問題求解

#include

using

namespace std;

const

int n =

1005

;int towns[n]

;//查

intfind

(int t)

//並void

bing

(int a,

int b)

//主函式

intmain()

for(

int i =

1; i <= n; i++)if

(towns[i]==-

1) ans++

; cout << ans -

1<< endl;

}return0;

}

輸入:["a==b","b!=a"]

輸出:false

解釋:如果我們指定,a = 1 且 b = 1,那麼可以滿足第乙個方程,但無法滿足第二個方程。沒有辦法分配變數同時滿足這兩個方程。

輸出:["b==a","a==b"]

輸入:true

解釋:我們可以指定 a = 1 且 b = 1 以滿足滿足這兩個方程。

輸入:["a==b","b!=c","c==a"]

輸出:false

class

unionfind

intfind

(int index)

parent[index]

=find

(parent[index]);

return parent[index];}

void

unite

(int index1,

int index2)};

class

solution

}for

(const string& str : equations)}}

return

true;}

};

參考:

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

佈線問題 並查集

描述 南陽理工學院要進行用電線路改造,現在校長要求設計師設計出一種佈線方式,該佈線方式需要滿足以下條件 1 把所有的樓都供上電。2 所用電線花費最少 輸入 第一行是乙個整數n表示有n組測試資料。n 5 每組測試資料的第一行是兩個整數v,e.v表示學校裡樓的總個數 v 500 隨後的e行裡,每行有三個...

並查集相關問題

include 演算法題 1 已知有n個人構成的乙個集合,其中某些人與某些人直接是朋友關係。假定朋友關係具有傳遞性 朋友的朋友也是朋友 對稱性 相互是朋友 自反性 我是我自己的朋友 給定m組朋友關係,想要知道n個人中的任意兩個人是不是朋友關係。using namespace std typedef ...