/*
	정점의 수가 고정된 방향성 그래프.
*/
#ifndef H_cDirectedGraph
#define H_cDirectedGraph

// 인접 리스트로 그래프를 표현한다.
#include "cList.h"

typedef int Vertex;

// 방향성 그래프
class cDirectedGraph{
private:
	// 그래프를 인접 리스트(Adjacency List)로 표현
	cList<Vertex> *HeadNodes;
	int VertexCount;


public:
	// 주어진 갯수의 정점으로 이루어진 비어있는 그래프를 생성한다.
	cDirectedGraph(const int vertices); 
	~cDirectedGraph();

	// 간선(u, v)를 그래프에 삽입한다.
	void InsertEdge(Vertex u, Vertex v); 
	// 간선(u, v)과 간선의 길이를 그래프에 삽입한다.
	void InsertEdge(Vertex u, Vertex v, int Distance);
	// 그래프에서 간선(u, v)를 제거한다.
	void DeleteEdge(Vertex u, Vertex v);

	// 그래프에 정점이 없다면 true 그렇지 않으면 false 를 리턴한다.
	bool IsEmpty();

};

#endif