sdut 1488 連通分量的個數(並查集)

2021-08-10 16:59:39 字數 1233 閱讀 5239

time limit: 1000ms

memory limit: 65536kb

submit

statistic

discuss

problem description

在無向圖中,如果從頂點vi到頂點vj有路徑,則稱vi和vj連通。如果圖中任意兩個頂點之間都連通,則稱該圖為連通圖,

否則,稱該圖為非連通圖,則其中的極大連通子圖稱為連通分量,這裡所謂的極大是指子圖中包含的頂點個數極大。

例如:乙個無向圖有5個頂點,1-3-5是連通的,2是連通的,4是連通的,則這個無向圖有3個連通分量。

input

第一行是乙個整數t,表示有t組測試樣例(0 < t <= 50)。每個測試樣例開始一行包括兩個整數n,m,(0 < n <= 20,0 <= m <= 200)

分別代表n個頂點,和m條邊。下面的m行,每行有兩個整數u,v,頂點u和頂點v相連。

output

每行乙個整數,連通分量個數。

example input

2

3 11 2

3 23 2

1 2

example output

2

1

hint

author

#include >

using namespace std;

int pre[25];

int find(int i)

return r;

}void join(int a,int b)

int main()

for(int i=0;i<=n;++i)

a[find(i)]=1;

for(int i=1;i<=n;++i)//要從1開始

if(a[i])

ans++;

cout<#include#includeusing namespace std;

typedef struct graph

mg;int vis[21];

void dfs(mg &g,int n)

}int main()

count=0;//連通分量的個數

//沒有被訪問過的頂點,做一次深搜就能找到乙個新的連通分量

for(int i=1;i<=n;i++)

}cout<}

return 0;

}

SDUT 1488 資料結構實驗 連通分量個數

在無向圖中,如果從頂點vi到頂點vj有路徑,則稱vi和vj連通。如果圖中任意兩個頂點之間都連通,則稱該圖為連通圖,否則,稱該圖為非連通圖,則其中的極大連通子圖稱為連通分量,這裡所謂的極大是指子圖中包含的頂點個數極大。例如 乙個無向圖有5個頂點,1 3 5是連通的,2是連通的,4是連通的,則這個無向圖...

SDUT1488 資料結構實驗 連通分量個數

time limit 1000 ms memory limit 65536 kib submit statistic problem description 在無向圖中,如果從頂點vi到頂點vj有路徑,則稱vi和vj連通。如果圖中任意兩個頂點之間都連通,則稱該圖為連通圖,否則,稱該圖為非連通圖,則其...

雙連通分量和強連通分量的總結

一 邊雙連通分量定義 在分量內的任意兩個點總可以找到兩條邊不相同的路徑互相到達。總而言之就是乙個圈,正著走反著走都可以相互到達,至少只有乙個點。二 點雙連通分量的定義 參照上面,唯一的不同 任意兩個點可以找到乙個點不同的路徑互相到達。也是乙個圈,正反走都可以,至少為乙個點。三 邊 點雙連通分量模板 ...