func New(kind GraphType) *Graph {
	g := &Graph{}
	if kind == Directed {
		g.Kind = Directed
	}
	return g
}
New creates and returns an empty graph.
If kind is Directed, returns a directed graph.
This function returns an undirected graph by default.
package graph
import (
	"errors"
)
type GraphType int
const (
	Undirected GraphType = iota
	Directed
)
type Graph struct {
	nodes []*node
	Kind  GraphType
}
type node struct {
	edges         []edge
	reversedEdges []edge
	index         int
	state         int    
	data          int    
	parent        *node  
	container     Node   
}
type Node struct {
	node *node
	Value *interface{}
}
type edge struct {
	weight int
	end    *node
}
type Edge struct {
	Weight int
	Start  Node
	End    Node
}