//========================================================================
// Project by:                 PJ Waskiewicz
// Project:                    Directed Graphs with adjacency matrices
// File:                       graph.h
// Purpose:                    Declarations of the templated graph
//
// Date:                       4/14/99
//
//
//
/* This is an implementation of a directed graph.
   This is a parametrized, or templated version
   of the graph data structure.  This implementation
   makes use of an adjacency matrix to
   implement the graph.
*/
//========================================================================

#ifndef GRAPH_H
#define GRAPH_H

#define MAX 500

template <class T>
class Graph{
 public:
  Graph();
  
  int Size() const;
  int Adjacent(T &p, T &q);
  void DeleteVertex(T &p);
  void DeleteEdge(T &p, T &q);
  void InsertVertex(T &p);
  void InsertEdge(T &p, T &q);
  int Find(T &e) const;
  
 private:
  int size;
  T vertex[MAX];
  int matrix[MAX][MAX];
};
#include "graph.cc"
#endif