public Dictionary <Vertice, int> resolver() { //Resolvendo para a América do Sul toda List <(int, Vertice)> verticesComGrau = new List <(int, Vertice)>(); foreach (Vertice v in vertices) { verticesComGrau.Add((grafo.grau(v), v)); } verticesComGrau.Sort((x, y) => y.Item1.CompareTo(x.Item1)); Dictionary <Vertice, int> mapaCores = new Dictionary <Vertice, int>(); int indiceCor = 0; for (int i = 0; i < verticesComGrau.Count; i++) { if (!mapaCores.ContainsKey(verticesComGrau[i].Item2)) { mapaCores.Add(verticesComGrau[i].Item2, ++indiceCor); for (int j = i + 1; j < verticesComGrau.Count; j++) { if (!(grafo.ehAdjacente(verticesComGrau[i].Item2, verticesComGrau[j].Item2)) && !mapaCores.ContainsKey(verticesComGrau[j].Item2)) { int ehadjacente = 0; foreach (Vertice v in mapaCores.Keys) { if (grafo.ehAdjacente(verticesComGrau[j].Item2, v) && mapaCores.GetValueOrDefault(v) == indiceCor) { ehadjacente = 1; } } if (ehadjacente == 0) { mapaCores.Add(verticesComGrau[j].Item2, indiceCor); } } } } } return(mapaCores); }