#include<iostream>
using namespace std;
#define UNVISTITED 0 //表示没有被访问过
#define VISITED 1 //表示被访问过
//图类
class Graph {
private:
int numVertex, numEdge;//点的数目和边的数目
int **matrix;//邻接矩阵
int *mark;
public:
//构造函数
Graph(int numVert) {
Init(numVert);
}
//析构函数
~Graph()
{
delete[]mark;
for (int i = 0; i < numVertex; i++) {
delete[]matrix[i];
}
delete[]matrix;
}
//初始化
void Init(int n) {
int i;
numVertex = n;
numEdge = 0;
mark = new int[numVertex];
matrix = new int*[numVertex];
for (i = 0; i < numVertex; i++) {
mark[i] = UNVISTITED;
}
for (i = 0; i < numVertex; i++) {
matrix[i] = new int[numVertex];
}
for (i = 0; i < numVertex; i++) {
for (int j = 0; j < numVertex; j++) {
matrix[i][j] = 0;
}
}
}
//返回点的数目
int n() { return numVertex; }
//返回边的数目
int e() { return numEdge; }
//返回点V的第一个邻居
int first(int v){
for (int i = 0; i < n(); i++) {
if (matrix[v][i] != 0) {
return i;
}
}
return -1;
}
//返回W后的第一个邻居
int next(int v, int w) {
for (int i = w + 1; i < n(); i++) {
if (matrix[v][i] != 0) {
return i;
}
}
return -1;
}
//设置v1与v2之间有边,赋值wt
void setEdge(int v1, int v2, int wt) {
if (matrix[v1][v2] == 0) {
matrix[v1][v2] = wt;
numEdge++;
}
}
//删除v1和v2之间的边
void deleteEdge(int v1, int v2) {
if (matrix[v1][v2] == 1) {
matrix[v1][v2] = 0;
numEdge--;
}
}
};
int main() {
}