#include<iostream>
using namespace std;
#define MAXVEX 100
#define INFINITY 65535
typedef int EType;
typedef char VType;
typedef struct
{
VType Vex[MAXVEX];
EType Arc[MAXVEX][MAXVEX];
int Vnums;
int Enums;
}MGraph;
bool VisitTag[MAXVEX];
void CreateMGraph(MGraph &G)
{
int i, j, k, w;
cin >> G.Vnums >>G.Enums;
for (i = 0; i < G.Vnums; ++i)
cin >> G.Vex[i];
for (i = 0; i < G.Vnums; ++i)
{
for (j = 0; j < G.Vnums; ++j)
G.Arc[i][j] =0;
}
for (k = 0; k < G.Enums; ++k)
{
cin >> i >> j;
if (i == j)
{
cout << "Equal!Error!" << endl;
exit(-1);
}
G.Arc[i][j] =1;
G.Arc[j][i] = G.Arc[i][j];
}
}
void Visit(char e)
{
cout << e << " ";
}
void DFS(MGraph G, int i)
{
int j;
VisitTag[i] = true;
Visit(G.Vex[i]);
for (j = 0;j < G.Vnums; ++j)
if (G.Arc[i][j] == 1 && !VisitTag[j])
DFS(G, j);
}
void DFSPrint(MGraph G)
{
int i;
for (i = 0; i < G.Vnums; ++i)
VisitTag[i] = false;
for (i = 0; i < G.Vnums; ++i)
if (!VisitTag[i])
DFS(G, i);
}
int main(void)
{
MGraph G;
CreateMGraph(G);
DFSPrint(G);
return(0);
}
数据结构之图的邻接矩阵DFS(参考C博客—研究毛)
最新推荐文章于 2023-10-07 23:36:51 发布