import
java.util.ArrayList;
import
java.util.Iterator;
import
java.util.List;
import
org.jgrapht.Graph;
import
org.jgrapht.Graphs;
import
org.jgrapht.alg.interfaces.ShortestPathAlgorithm.SingleSourcePaths;
import
org.jgrapht.alg.shortestpath.DijkstraShortestPath;
import
org.jgrapht.graph.DefaultDirectedGraph;
import
org.jgrapht.graph.DefaultEdge;
public
class
GraphTraversal {
public
static
void
main(String[] args)
{
directedGraph();
bidirectionalGraph();
}
public
static
void
directedGraph()
{
System.out.println(
"Directed Graph"
);
Graph<Integer, DefaultEdge> g
=
new
DefaultDirectedGraph<>(DefaultEdge.
class
);
Integer v1 =
1
, v2 =
2
, v3 =
3
;
g.addVertex(v1);
g.addVertex(v2);
g.addVertex(v3);
g.addEdge(v1, v2);
g.addEdge(v3, v2);
g.addEdge(v2, v3);
g.addEdge(v2, v1);
List<DefaultEdge> outEdges
=
new
ArrayList<>(g.outgoingEdgesOf(v2));
System.out.println(
"Out edges: "
);
Iterator<DefaultEdge> iter = outEdges.iterator();
while
(iter.hasNext()) {
DefaultEdge edge = iter.next();
System.out.print(
"("
+ g.getEdgeSource(edge)
+
", "
+ g.getEdgeTarget(edge)
+
") "
);
}
System.out.println();
}
public
static
void
bidirectionalGraph()
{
System.out.println(
"Bidirectional Graph"
);
Graph<Integer, DefaultEdge> g
=
new
DefaultDirectedGraph<>(DefaultEdge.
class
);
Integer v1 =
1
, v2 =
2
, v3 =
3
;
g.addVertex(v1);
g.addVertex(v2);
g.addVertex(v3);
g.addEdge(v1, v2);
g.addEdge(v3, v2);
g.addEdge(v2, v3);
g.addEdge(v2, v1);
List<DefaultEdge> inEdges
=
new
ArrayList<>(g.incomingEdgesOf(v2));
System.out.println(
"In edges: "
);
Iterator<DefaultEdge> iter = inEdges.iterator();
while
(iter.hasNext()) {
DefaultEdge edge = iter.next();
System.out.print(
"("
+ g.getEdgeSource(edge)
+
", "
+ g.getEdgeTarget(edge)
+
") "
);
}
System.out.println();
List<DefaultEdge> outEdges
=
new
ArrayList<>(g.outgoingEdgesOf(v2));
System.out.println(
"Out edges: "
);
iter = outEdges.iterator();
while
(iter.hasNext()) {
DefaultEdge edge = iter.next();
System.out.print(
"("
+ g.getEdgeSource(edge)
+
", "
+ g.getEdgeTarget(edge)
+
") "
);
}
System.out.println();
}
}