1、神秘国度
2、实现代码
递归版本:
//神秘国度的爱情故事
#include <iostream>
using namespace std;
#define MVNum 500 //最大顶点数
typedef int VerTexType; //假设顶点的数据类型为字符型
typedef int ArcType; //假设边的权值类型为整型
//-------------图的邻接矩阵-----------------
typedef struct {
VerTexType *vexs = new int[MVNum]; //顶点表
ArcType **arcs = new int*[MVNum]; //邻接矩阵
int vexnum; //图的当前点数
}Graph;
void pp(Graph &G) {
for (int i = 0; i < MVNum; i++) {
G.arcs[i] = new int[MVNum];
}
}
bool *visited = new bool[MVNum]; //访问标志数组,其初值为"false"
int isc, isb,tc= 0;
//int back;
//确定点v在G中的位置
int LocateVex(Graph G, VerTexType v) {
for (int i = 0; i < G.vexnum; ++i)
if (G.vexs[i] == v)
return i;
return -1;
}
//采用邻接矩阵表示法,创建无向网G
void CreateUDN(Graph &G) {
int i, j, k;
cout << "请输入神秘国度里村子的个数";
cin >> G.vexnum; //输入总顶点数,总边数
cout << endl;
for (int i = 0; i < G.vexnum; ++i) //初始化点的信息
G.vexs[i] = i;
for (int i = 0; i < G.vexnum; ++i) //初始化邻接矩阵,边的权值均置为0
for (int j = 0; j < G.vexnum; ++j)
G.arcs[i][j] = 0;
cout << "输入边依附的顶点,如a b" << endl;
for (k = 0; k < G.vexnum - 1; ++k) {
//构造邻接矩阵
VerTexType v1, v2;
cout << "请输入第" << (k + 1) << "条边依附的顶点:";
cin >> v1 >> v2; //输入一条边依附的顶点及权值
i = LocateVex(G, v1); j