06-图1 列出连通集 (25 分)
代码如下:
#include <iostream>
#define maxVertexNum 10
using namespace std;
typedef int graph;
typedef int vertex;
graph G[maxVertexNum][maxVertexNum];//邻接矩阵
bool visit[maxVertexNum];
void DFS(vertex v,int N)
{
visit[v] = true;
cout << v << " ";
for (int w = 0; w < N; w++) {
if (!visit[w] && G[v][w] == 1) {
DFS(w,N);
}
}
}
void BFS(vertex v,int N)
{
int queue[100];
int front = -1, rear = -1;
visit[v] = true;
cout << v << " ";
queue[++rear] = v;
while (rear > front) {
v = queue[++front];//DeQueue
for (int w = 0; w < N; w++) {
if (!visit[w] && G[v][w] == 1) {
visit[w] = true;
cout << w << " ";
queue[++rear] = w;//EnQueue
}
}
}
}
int main()
{
int N, L;
int v1, v2;
cin >> N >> L;
for (int j = 0; j < N; j++)
visit[j] = false;
for (int i = 0; i < L; i++) {//填表
cin >> v1 >> v2;
G[v1][v2] = 1;
G[v2][v1] = 1;
}
for (int k = 0; k < N; k++) {
if (!visit[k]) {
cout << "{ ";
DFS(k,N);
cout << "}"<<endl;
}
}
for (int j = 0; j < N; j++)
visit[j] = false;
for (int k = 0; k < N; k++) {
if (!visit[k]) {
cout << "{ ";
BFS(k, N);
cout << "}" << endl;
}
}
}