コード例 #1
0
        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);
        }
コード例 #2
0
 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);
     }
 }