代码:
package com.test;
import lombok.Data;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @classname: TestNode
* @description: 将区间拆分
* @create: 2020/09/28
*/
public class TestNode {
@Data
public static class Edge
{
public Edge(int start, int end, String info) {
this.start = new Node(start, 0, info);
this.end = new Node(end, 1, info);
this.info = info;
this.flag = false;
}
boolean contain(Node node) {
return start.equals(node) || end.equals(node);
}
Node start;
Node end;
String info;
boolean flag;
public boolean getFlag() {
return flag;
}
}
@Data
public static class Node implements Comparable<Node>
{
public Node(int time, int flag) {
this.time = time;
this.flag = flag;
}
public Node(int time, int flag, String edgeName) {
this.time = time;
this.flag = flag;
this.edgeName = edgeName;
}
int time;
int flag = 0;
String edgeName;
@Override
public int compareTo(Node o) {
return this.time >= o.getTime() ? 1 : -1;
}
}
public static Edge getEdge(Node node, List<Edge> edges)
{
for (Edge edge : edges) {
if (edge.getInfo().equals(node.getEdgeName())) {
return edge;
}
}
return null;
}
public static void main(String[] args)
{
List<Edge> edges = new ArrayList<>();
edges.add(new Edge(0, 10, "A0"));
edges.add(new Edge(11, 20, "A1"));
edges.add(new Edge(2, 5, "B0"));
edges.add(new Edge(8, 16, "B1"));
edges.add(new Edge(18, 20, "B2"));
edges.add(new Edge(1, 18, "C0"));
edges.add(new Edge(21, 22, "C1"));
edges.add(new Edge(0, 14, "D0"));
List<Node> nodes = new ArrayList<>();
for (Edge edge : edges) {
nodes.add(edge.getStart());
nodes.add(edge.getEnd());
}
// 节点排序
Collections.sort(nodes);
// 节点分层保存
List<List<Node>> edgeList = new ArrayList<>();
for (Node node : nodes) {
if (edgeList.isEmpty()) {
edgeList.add(new ArrayList<>());
edgeList.get(edgeList.size() - 1).add(node);
continue;
}
List<Node> last = edgeList.get(edgeList.size() - 1);
if (node.getFlag() == 1) {
if (last.isEmpty()) {
edgeList.get(edgeList.size() - 1).add(node);
edgeList.add(new ArrayList<>());
continue;
}
if (last.get(last.size() - 1).getFlag() == 0) {
edgeList.get(edgeList.size() - 1).add(node);
edgeList.add(new ArrayList<>());
} else {
if (last.get(last.size() - 1).getTime() != node.getTime()) {
edgeList.add(new ArrayList<>());
}
edgeList.get(edgeList.size() - 1).add(node);
}
} else {
edgeList.get(edgeList.size() - 1).add(node);
}
}
// 结果集
List<List<Edge>> result = new ArrayList<>();
for (List<Node> nodes1 : edgeList) {
if (nodes1.isEmpty()) {
continue;
}
result.add(new ArrayList<>());
for (Node node : nodes1) {
Edge edge = getEdge(node, edges);
if (edge == null || edge.getFlag() || result.get(result.size() - 1).contains(edge)) {
continue;
}
result.get(result.size() - 1).add(edge);
}
// 将上一层中未结束的边加入列表
if (result.size() > 1) {
List<Edge> ll = result.get(result.size() - 2);
for (Edge edge : ll) {
if (!edge.getFlag() && !result.get(result.size() - 1).contains(edge)) {
result.get(result.size() - 1).add(edge);
}
}
}
// 尾节点的边设置为结束
getEdge(nodes1.get(nodes1.size() - 1), edges).setFlag(true);
System.out.println(result);
}
}
}
结果:
[[TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=false), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=false), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false), TestNode.Edge(start=TestNode.Node(time=2, flag=0, edgeName=B0), end=TestNode.Node(time=5, flag=1, edgeName=B0), info=B0, flag=true)]]
[[TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=false), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false), TestNode.Edge(start=TestNode.Node(time=2, flag=0, edgeName=B0), end=TestNode.Node(time=5, flag=1, edgeName=B0), info=B0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=false), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=false), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false)]]
[[TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false), TestNode.Edge(start=TestNode.Node(time=2, flag=0, edgeName=B0), end=TestNode.Node(time=5, flag=1, edgeName=B0), info=B0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=false), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false)], [TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=false), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=false), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false)]]
[[TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false), TestNode.Edge(start=TestNode.Node(time=2, flag=0, edgeName=B0), end=TestNode.Node(time=5, flag=1, edgeName=B0), info=B0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false)], [TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=false), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=false), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=false)]]
[[TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true), TestNode.Edge(start=TestNode.Node(time=2, flag=0, edgeName=B0), end=TestNode.Node(time=5, flag=1, edgeName=B0), info=B0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=false), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=false), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=18, flag=0, edgeName=B2), end=TestNode.Node(time=20, flag=1, edgeName=B2), info=B2, flag=false), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true), TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=false)]]
[[TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true), TestNode.Edge(start=TestNode.Node(time=2, flag=0, edgeName=B0), end=TestNode.Node(time=5, flag=1, edgeName=B0), info=B0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=18, flag=0, edgeName=B2), end=TestNode.Node(time=20, flag=1, edgeName=B2), info=B2, flag=false), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true), TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true)], [TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true), TestNode.Edge(start=TestNode.Node(time=18, flag=0, edgeName=B2), end=TestNode.Node(time=20, flag=1, edgeName=B2), info=B2, flag=false)]]
[[TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true), TestNode.Edge(start=TestNode.Node(time=2, flag=0, edgeName=B0), end=TestNode.Node(time=5, flag=1, edgeName=B0), info=B0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=18, flag=0, edgeName=B2), end=TestNode.Node(time=20, flag=1, edgeName=B2), info=B2, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true), TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true)], [TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true), TestNode.Edge(start=TestNode.Node(time=18, flag=0, edgeName=B2), end=TestNode.Node(time=20, flag=1, edgeName=B2), info=B2, flag=true)], [TestNode.Edge(start=TestNode.Node(time=18, flag=0, edgeName=B2), end=TestNode.Node(time=20, flag=1, edgeName=B2), info=B2, flag=true)]]
[[TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true), TestNode.Edge(start=TestNode.Node(time=2, flag=0, edgeName=B0), end=TestNode.Node(time=5, flag=1, edgeName=B0), info=B0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=A0), end=TestNode.Node(time=10, flag=1, edgeName=A0), info=A0, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true), TestNode.Edge(start=TestNode.Node(time=0, flag=0, edgeName=D0), end=TestNode.Node(time=14, flag=1, edgeName=D0), info=D0, flag=true), TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=8, flag=0, edgeName=B1), end=TestNode.Node(time=16, flag=1, edgeName=B1), info=B1, flag=true), TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true)], [TestNode.Edge(start=TestNode.Node(time=18, flag=0, edgeName=B2), end=TestNode.Node(time=20, flag=1, edgeName=B2), info=B2, flag=true), TestNode.Edge(start=TestNode.Node(time=1, flag=0, edgeName=C0), end=TestNode.Node(time=18, flag=1, edgeName=C0), info=C0, flag=true), TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true)], [TestNode.Edge(start=TestNode.Node(time=11, flag=0, edgeName=A1), end=TestNode.Node(time=20, flag=1, edgeName=A1), info=A1, flag=true), TestNode.Edge(start=TestNode.Node(time=18, flag=0, edgeName=B2), end=TestNode.Node(time=20, flag=1, edgeName=B2), info=B2, flag=true)], [TestNode.Edge(start=TestNode.Node(time=18, flag=0, edgeName=B2), end=TestNode.Node(time=20, flag=1, edgeName=B2), info=B2, flag=true)], [TestNode.Edge(start=TestNode.Node(time=21, flag=0, edgeName=C1), end=TestNode.Node(time=22, flag=1, edgeName=C1), info=C1, flag=true)]]