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
23 1
1 23 2
3 21 2example output
21hint
#include#include//memset
int n,m;
int map[51][51]; //鄰接矩陣
int vis[50]; //訪問陣列
int cnt; //記錄連通分量個數
/*深度優先遍歷,在main函式中已經對鄰接矩陣初始化並賦值,
此時我們要利用深度優先遍歷演算法來遍歷所有的連通分量*/
void dfs(int u) }}
int main(){
int t;
int u,v;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
memset(map,0,sizeof(map));
cnt=0;
memset(vis,0,sizeof(vis));
for(int i=0;i
資料結構實驗 連通分量個數
在無向圖中,如果從頂點vi到頂點vj有路徑,則稱vi和vj連通。如果圖中任意兩個頂點之間都連通,則稱該圖為連通圖,否則,稱該圖為非連通圖,則其中的極大連通子圖稱為連通分量,這裡所謂的極大是指子圖中包含的頂點個數極大。例如 乙個無向圖有5個頂點,1 3 5是連通的,2是連通的,4是連通的,則這個無向圖...
資料結構實驗 連通分量個數
在無向圖中,如果從頂點vi到頂點vj有路徑,則稱vi和vj連通。如果圖中任意兩個頂點之間都連通,則稱該圖為連通圖,否則,稱該圖為非連通圖,則其中的極大連通子圖稱為連通分量,這裡所謂的極大是指子圖中包含的頂點個數極大。例如 乙個無向圖有5個頂點,1 3 5是連通的,2是連通的,4是連通的,則這個無向圖...
資料結構實驗 連通分量個數
time limit 1000ms memory limit 65536k 有疑問?點這裡 在無向圖中,如果從頂點vi到頂點vj有路徑,則稱vi和vj連通。如果圖中任意兩個頂點之間都連通,則稱該圖為連通圖,否則,稱該圖為非連通圖,則其中的極大連通子圖稱為連通分量,這裡所謂的極大是指子圖中包含的頂點個...