問題 b: ds_7.2 求解連通分量個數(by yan)
從鍵盤接收圖的頂點集,關係集,建立無向圖。
第一行依次輸入圖的頂點個數n,關係個數k,以空格隔開。頂點個數<=20
第二行依次輸入頂點值,型別為字元。
接下去有k行,每行為兩個字元 u 和 v,表示節點u 和 v 連通。格式為【uv】,中間不用空格間隔。
計算連通分量個數並輸出。
輸出乙個整數,表示連通分量個數。
6 7abcdef
abae
bccd
dadb
ec
#include #include #include #define maxvex 20
typedef struct sqstacksqqueue;
typedef struct
adjmatrix;
void create(adjmatrix *g)
} getchar();
// printf("請輸入有向圖中%d個頂點:\n",g->vexnum);
for(i = 1;i<=g->vexnum;i++)
getchar();
// printf("請輸入有向圖的%d條邊",g->arcnum);
for(k = 0;karcnum;k++)
}/*初始化圖的遍歷陣列*/
void initialise(adjmatrix *g)
}/*深度優先*/
void dfs(adjmatrix *g,int vo)
} }int firstadj(adjmatrix *g,int vo)
} return -1;
}int nextadj(adjmatrix *g,int vo,int w)
} return -1;
}/*廣度優先*/
void bfs(adjmatrix *g,int vo)
w = nextadj(g,vo,w);
// printf("%d",w);
} }}int main(void)
} printf("%d",count);
return 0;
}
資料結構實驗 連通分量個數
在無向圖中,如果從頂點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連通。如果圖中任意兩個頂點之間都連通,則稱該圖為連通圖,否則,稱該圖為非連通圖,則其中的極大連通子圖稱為連通分量,這裡所謂的極大是指子圖中包含的頂點個...