internal EdgeKind GetEdgeKind(Vector2 point) { if (EdgeA.Contains(point)) { return(EdgeKind.A); } if (EdgeB.Contains(point)) { return(EdgeKind.B); } if (EdgeC.Contains(point)) { return(EdgeKind.C); } if (EdgeD.Contains(point)) { return(EdgeKind.D); } return(EdgeKind.None); }
public static Microsoft.Msagl.Drawing.Graph Kruskal(Graph graph) { int verticesCount = graph.VerticesCount; EdgeB[] result = new EdgeB[verticesCount]; int i = 0; int e = 0; Array.Sort(graph.edge, delegate(EdgeB a, EdgeB b) { return(a.Weight.CompareTo(b.Weight)); }); Subset[] subsets = new Subset[verticesCount]; for (int v = 0; v < verticesCount; ++v) { subsets[v].Parent = v; subsets[v].Rank = 0; } while (e < verticesCount - 1) { EdgeB nextEdge = graph.edge[i++]; int x = Find(subsets, nextEdge.Source); int y = Find(subsets, nextEdge.Destination); if (x != y) { result[e++] = nextEdge; Union(subsets, x, y); } } return(Print(result, e)); }