public List <GraphEdge <T> > GetEdges() { List <GraphEdge <T> > edges = new List <GraphEdge <T> >(); foreach (GraphNode <T> from in Nodes) { for (int i = 0; i < from.Neighbors.Count; i++) { GraphEdge <T> edge = new GraphEdge <T>() { From = from, To = from.Neighbors[i], Weight = i < from.Weights.Count ? from.Weights[i] : 0 }; edges.Add(edge); } } return(edges); }
public GraphEdge <T> this[int from, int to] { get { GraphNode <T> nodeFrom = Nodes[from]; GraphNode <T> nodeTo = Nodes[to]; int i = nodeFrom.Neighbors.IndexOf(nodeTo); if (i >= 0) { GraphEdge <T> edge = new GraphEdge <T>() { From = nodeFrom, To = nodeTo, Weight = i < nodeFrom.Weights.Count ? nodeFrom.Weights[i] : 0 }; return(edge); } return(null); } }