graph.go 509 B

1234567891011121314151617181920212223242526272829303132
  1. package main
  2. type (
  3. AdjacencyMatrix map[int]map[int]int
  4. Graph struct {
  5. X map[int]Vector
  6. L map[int]int
  7. A AdjacencyMatrix
  8. }
  9. )
  10. func (A AdjacencyMatrix) Modify(u, v, w int) {
  11. if A[u] == nil {
  12. A[u] = make(map[int]int)
  13. }
  14. A[u][v] = w
  15. }
  16. func MakeGraph() Graph {
  17. return Graph{make(map[int]Vector), make(map[int]int), make(AdjacencyMatrix)}
  18. }
  19. func (G Graph) AddNode(u int, V Vector, l int) {
  20. G.X[u] = V
  21. G.L[u] = l
  22. }
  23. func (G Graph) AddEdge(u, v int) {
  24. G.A.Modify(u, v, 1)
  25. G.A.Modify(v, u, -1)
  26. }