while (Vertices.Count > 0) { object node; node = Vertices[0]; Vertices.Remove(node); tip.Enqueue(node); //vrogxos gia euresh twn clusters List temp = new List(); bool flag = true; while (tip.Count > 0) { int y; y = Convert.ToInt32(tip.Dequeue()); //elegxos gia louparisma, an exoume kuklo exoume epanalhpsh, //me th lista auth apofeygetai to loop //ka8e komvos grafetai mono mia fora se ena cluster kai h visited perilamvanei olous tous komvous if (!visited.Contains(y)) { visited.Add(y); for (int k = 0; k < weights.GetLength(0); k++) { if (weights[y, k] >=1) { tip.Enqueue(k); Vertices.Remove(k); //to cluster ksekinaei twra dhmiourgia toswn arraylists osa kai ta prwta links toy y if (flag) { ArrayList tmp = new ArrayList(); tmp.Add(y); tmp.Add(k); temp.Add(tmp); } else { foreach (ArrayList ar in temp) { if ((ar.Contains(y))&& (!ar.Contains(k))) { ar.Add(k); } } } } } flag = false; } } if (visited.Count > 0) { foreach (object page in visited) { sw.Write(page.ToString() + " "); } sw.WriteLine(); clusters++; foreach (ArrayList ar in temp) { foreach (object page in ar) { sl.Write(page.ToString() + " "); } sl.WriteLine(); } } visited.Clear(); temp.Clear(); } } } }