描述
设计一个算法,试基于深度优先搜索判断以邻接表方式存储的有向图中是否存在由顶点vi
输入
多组数据,每组m+3数据行。第一行有两个数字n和m,代表有n个顶点和m条边。第二行有n个字符,代表n个顶点的编号。第三行到第m+2行每行有两个字符h和k,代表边依附的两个顶点。第m+3行有两个字符vi和vj,代表需要判断的两个顶点。当n和m都等于0时,输入结束。
输出
每组数据输出一行。若存在路径输出“YES”,反之输出“NO”。
输入样例 1
3 2 abc ab bc ac 4 2 bcsw bs sw cs 0 0
输出样例 1
YES NO
//基于深度优先搜索的两顶点路径存在与否的判断
#include <iostream>
#define MVNum 100
using namespace std;
typedef struct ArcNode{//边信息
char p;//顶点
ArcNode *nextarc; //下一条边
}ArcNode,*ArcList;
typedef struct VNode{//顶点信息
char name;//存储顶点的代号
ArcNode *ArcList;//指向第一条依附于他的边
}VNode,AdjList[MVNum];//如果此处用链表不好随时调用某顶点的信息
typedef struct{
AdjList vertices;//图的本体
int vex