package main type ( AdjacencyMatrix map[int]map[int]int Graph struct { X map[int]Vector L map[int]int 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(map[int]int), make(AdjacencyMatrix)} } func (G Graph) AddNode(u int, V Vector, l int) { G.X[u] = V G.L[u] = l } func (G Graph) AddEdge(u, v int) { G.A.Modify(u, v, 1) G.A.Modify(v, u, -1) }