| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package main
- type (
- AdjacencyMatrix map[int]map[int]int
- Graph struct {
- X map[int]Vector
- E []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 {
- G := Graph{
- make(map[int]Vector),
- make([]map[int]Vector, 3),
- make(map[int]int),
- make(AdjacencyMatrix),
- }
- for i := 0; i < 3; i++ {
- G.E[i] = make(map[int]Vector)
- }
- return G
- }
- 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)
- }
|