#ifndef MGraph_H //避 À¨¹ 免 a 包 㨹 含?MGraph.h 头 ª¡¤文?件 t
#define MGraph_H
#pragma once
const int MaxSize=10; //图 ª?中 D 最 Á?多¨¤顶£¤点 Ì?个?数 ºy
template<class T>
class MGraph
{
public:
MGraph(T a[],int n,int e); //建¡§立¢¡é 具?有®Dn 个?顶£¤点 Ì?e 条¬?边 À?的 Ì?图
ª?
~MGraph(void){} //析?构 1 函¡¥数 ºy 为 a 空?
void DFSTraverse(int v); //深¦?度¨¨优®?先¨¨遍 À¨¦历¤¨² 图 ª?
void BFSTraverse(int v); //广?度¨¨优®?先¨¨遍 À¨¦历¤¨² 图 ª?
void DFS();
void BFS();
void D(); //删¦?除 y 连¢?接¨®x,ê?y 节¨² 点 Ì?的 Ì?边 À?
void Q(); //询¡¥问¨ºx,ê?y 节¨² 点 Ì?是 º?否¤?连¢?通 ª¡§
private:
T vertex[MaxSize]; //存 ä?放¤?图 ª?中 D 顶£¤点 Ì?的 Ì?数 ºy 组 Á¨¦
int arc[MaxSize][MaxSize]; //存 ä?放¤?图 ª?中 D 边 À?的 Ì?数 ºy 组 Á¨¦
int vertexNum,arcNum; //图 ª?的 Ì?顶£¤点 Ì?数 ºy 和¨ª 边 À?数 ºy
int a,b,c,d; //任¨?意°a 两¢?条¬?边 À?的 Ì?顶£¤点 Ì?
};
#endif;
#include<iostream> //引°y 入¨?输 º?入¨?输 º?出?流¢¡Â
using namespace std;
#include "MGraph.h"
template<class T>
MGraph<T>::MGraph(T a[],int n,int e)
{
int i,j,k;
vertexNum=n;
arcNum=e;
for(i=0;i<vertexNum;i++) //存 ä?储 ä¡é 图 ª?的 Ì?顶£¤点 Ì?信?息¡é
vertex[i]=a[i];
for(i=0;i<vertexNum;i++) //初?始 º?化¡¥图 ª?的 Ì?邻¢¨² 接¨®矩?阵
¨®
for(j=0;j<vertexNum;j++)
arc[i][j]=0;
for(k=0;k<arcNum;k++) //存 ä?储 ä¡é 图 ª?的 Ì?边 À?信?息¡é
{
cout<<"请?输 º?入¨?边 À?得 Ì?两¢?个?顶£¤点 Ì?的 Ì?序¨°号?:"; //序¨°号?:êo
数 ºy 组 Á¨¦中 D 的 Ì?位?置?
cin>>i>>j;
arc[i][j]=1;arc[j][i]=1;
}
}
template<class T>
void MGraph<T>:: DFSTraverse(int v) //深¦?度¨¨优®?先¨¨遍 À¨¦历¤¨² 图 ª?
{
// 2cout<<vertex[v];