杭電1272 並差集

2021-09-23 22:33:37 字數 1129 閱讀 6189

原題傳送門,並差集模板詳解鏈結,大佬並差集詳解鏈結。

解題思路

1、判斷是否有環

2、判斷所有的房子是否連在一起。

第一點可以通過same函式判斷,在輸入的時候就可以判斷;

第二點可以先通過vis陣列標記,然後遍歷vis陣列,當vis[i]==1並且id[i]==i的時候,說明i是最上面的父親。再符合條件的情況下,這樣的父親只有乙個,如果個數大於一,說明房間並不是全都相連,ans=「no」。

ac**:

# include

# include

# include

# include

# include

# include

# include

using namespace std;

const

int maxn =

1e5+10;

int id[maxn]

;int ra[maxn]

;int vis[maxn]

;int

fin(

int x)

void

meg(

int x,

int y)

else}}

bool same

(int x,

int y)

intmain()

memset

(ra,0,

sizeof

(ra));

memset

(vis,0,

sizeof

(vis));

string ans =

"yes"

;while

(true)

if(m ==

0&& n ==0)

vis[m]

= vis[n]=1

;if(same

(m, n)

)else

}int num =0;

for(

int i =

0; i < maxn; i++)if

(num >1)

} cout << ans << endl;

}return0;

}

杭電1198 並差集

原題傳送門,並差集模板函式簡單介紹,大佬的並差集詳解。寫在題前 因為最近學的並差集,因此專門搜的杭電並差集,也就是說,在看這個題之前我已經知道他是用並差集來做的。之前我碰到的題沒有涉及到二維這種情況,其實了解了思路還是很好做的,就是過程有點繁瑣,細節要注意。解題步驟 1 遍歷每個田地,對於每個田地,...

杭電1598 並差集

寫在題前 解題思路 將輸入的資料,按照速度的大小 從小到大 排序 依次將資料用meg函式建立關係,判斷查詢的資料是否符合 第一次符合條件的速度減去剛開始的速度就是答案。具體見 寫在題後 ac include include include include include include includ...

杭電3461 並差集

原題傳送門 寫在題前 剛開始怎麼看也不像是並差集,以為就是單純的邏輯題 萬物皆邏輯。嗯,真香 後來做不出來,仔細想想才發現這是並差集,隱藏的好深啊,其實理解之後就是乙個簡單的並差集,看 就知道。解題思路 前面 1 2 3 4 和1 4其實是重合的,有沒有這個資料都一樣,因此,1 4並不用計算在裡面。...