這道題是並查集的典型應用
兩個點聯通即可以表示兩個點在同乙個集合中
我們需要對不同的集合進行維護
使用並查集是比較優化的方式
需要注意的是題目中儲存每個節點的數量的s陣列,只對根節點的s是有效的
#include
using
namespace std;
const
int n =
1e4+10;
int n, op;
int p[n]
;int s[n]
;//儲存每個點所在的集合的點的數量,只能保證根節點的數量是有效的
intfind
(int x)
intmain()
cout << s[
find(1
)]<< endl;
//只有根節點的s值是有效的,1號節點不一定是根節點
return0;
}
8連通 4連通的洪氾填充以及邊界填
運用八連通邊界填充演算法 進行多邊形的填充 1 首先通過顏色混合的方式形成乙個圖形包中函式的對多邊形的填充,如下圖所示 注 主要 如下 實現多邊形的簡單填充 include include void init void void linesegment void int main int argc,...
OpenCV筆記(1) 連通域分割實現
最近在做乙個東西,需要使用字元的分割,如下圖所示 可以看到這裡的每個字元互相之間是沒有粘連的,那麼如何把他們分割開來呢?乙個很簡單的想法就是通過連通域進行分割,每個字元是乙個連通域,不同字元之間是不同的連通域,因為這裡沒有粘連,所以處理起來是非常方便的。那麼重點就來了,如何實現連通域的分割呢?原來的...
837 連通塊中點的數量
給定乙個包含n個點 編號為1 n 的無向圖,初始時圖中沒有邊。現在要進行m個操作,操作共有三種 c a b 在點a和點b之間連一條邊,a和b可能相等 q1 a b 詢問點a和點b是否在同乙個連通塊中,a和b可能相等 q2 a 詢問點a所在連通塊中點的數量 輸入格式 第一行輸入整數n和m。接下來m行,...