package main type ( AdjacencyMatrix map[int]map[int]int Graph struct { X map[int]Vector A AdjacencyMatrix } ) func (A AdjacencyMatrix) Modify(u, v, w int) { if A[u] == nil { A[u] = make(map[int]int) } A[u][v] = w } func MakeGraph() Graph { return Graph{make(map[int]Vector), make(AdjacencyMatrix)} } func (G Graph) AddNode(u int, V Vector) { G.X[u] = V } func (G Graph) AddEdge(u, v int) { G.A.Modify(u, v, 1) G.A.Modify(v, u, -1) }