// Copyright ©2014 The Gonum Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "fmt" "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/topo" ) func main() { // graph G { G := NewGraphNode(0) // e e := NewGraphNode(1) // subgraph clusterA { clusterA := NewGraphNode(2) // a -- b a := NewGraphNode(3) b := NewGraphNode(4) a.AddNeighbor(b) b.AddNeighbor(a) clusterA.AddRoot(a) clusterA.AddRoot(b) // subgraph clusterC { clusterC := NewGraphNode(5) // C -- D C := NewGraphNode(6) D := NewGraphNode(7) C.AddNeighbor(D) D.AddNeighbor(C) clusterC.AddRoot(C) clusterC.AddRoot(D) // } clusterA.AddRoot(clusterC) // } // subgraph clusterB { clusterB := NewGraphNode(8) // d -- f d := NewGraphNode(9) f := NewGraphNode(10) d.AddNeighbor(f) f.AddNeighbor(d) clusterB.AddRoot(d) clusterB.AddRoot(f) // } // d -- D d.AddNeighbor(D) D.AddNeighbor(d) // e -- clusterB e.AddNeighbor(clusterB) clusterB.AddNeighbor(e) // clusterC -- clusterB clusterC.AddNeighbor(clusterB) clusterB.AddNeighbor(clusterC) G.AddRoot(e) G.AddRoot(clusterA) G.AddRoot(clusterB) // } if !topo.IsPathIn(G, []graph.Node{C, D, d, f}) { fmt.Println("Not working!") } else { fmt.Println("Working!") } }