graph.go 455 B

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