#include "graph.h" // Определение родительского класса
// Описание класса для представления A-графа
class ArcGraph : public Graph {
// Дуга представлена элементом списка, содержащим номера
// концов дуги и указатель на следующий элемент списка
struct Arc {
int begin, end;
Arc *next;
// Конструктор дуги.
Arc{int b, int e, Arc *n = NULL) {
begin = b; end = e; next = n; )
};
// Список дуг представлен, как обычно,
// указателями на первый и последний элементы списка
Arc *first, *last;
// arcCount - счетчик числа дуг-элементов списка
int arcCount;
// vertexNumber - количество вершин графа, используемое
//в данном представлении только для контроля номеров вершин
int vertexNumber;
public:
// Конструктор графа инициализирует пустой список
// и запоминает количество вершин графа.
ArcGraph(int n) {
first = last = NULL; arcCount = 0; vertexNumber = n;
}
// Функция подсчета количества вершин выдает запомненное значение
int vertexCoun() const { return vertexNumber; }
// Операции над дугами:
void addArc(int from, int to);
bool hasArc(int from, int to) const;
};