一道函数题:小岛计数

伽马群岛由若干小岛构成,开发者在某些小岛间修建了水上通路,使得群岛大部分连通,但也不排除部分小岛仍为孤岛,创建伽马群岛的地图,例如:

一道函数题:小岛计数_第1张图片

 编写函数数一数该群岛共有多少个小岛。

函数接口定义:

int DFS(AMGraph G, int v);//以v为起点遍历图G(v所在的连通分量)
int  DFSTraverse(AMGraph G);//遍历图G

G为图,采用邻接矩阵存储结构,v为起点

#include 
#include 
#define MVNum 100

int visited[MVNum];

typedef struct{
    char vexs[MVNum];        //顶点向量
    int arcs[MVNum][MVNum]; //邻接矩阵
    int vexnum,arcnum;      //顶点数,边数
}AMGraph;

int DFS(AMGraph G, int v);//以v为起点遍历图G(v所在的连通分量)
int  DFSTraverse(AMGraph G);//遍历图G

int LocateVex(AMGraph G,char u)   //查询顶点u的下标
 {
   int i,count;
   for(i=0;i

输入格式:

第1行依次输入若干顶点的值(顶点之间无间隔),以‘#’结束(顶点不包含#)
接下来若干行输入每条边的信息,格式为:v1空格v2,直到输入‘# #’结束。

输出一个整数,为小岛数量

输入样例:

ABCD#
A B
A C
# #

输出样例:

4

答案:

#include 
using namespace std;
int DFS(AMGraph G, int v){
    int res = 1;
    visited[v]=true;
    for(int w=0;w

你可能感兴趣的:(PTA,深度优先,算法,c++,图论)