void Tree() { int vNum = roomLayer.Objects.OfType <Room>().Count(x => x.isMainRoom); var kruskal = new Kruskal(vNum, graphLayer.Objects.OfType <Line>()); LineList = kruskal.Compute(); var unSelectedLines = new List <Line>(); foreach (Line line in graphLayer.Objects.OfType <Line>().Where(x => !(LineList.Any(x.Equals)))) { graphLayer.RemoveObject(line); unSelectedLines.Add(line); } foreach (Line line in new List <Line>(unSelectedLines) .OrderBy(i => Guid.NewGuid()) .Take((int)(unSelectedLines.Count() * 0.1)) ) { graphLayer.AddObject(line); unSelectedLines.Remove(line); } foreach (Line line in unSelectedLines) { line.Dispose(); } }