예제 #1
0
  public String getCliques(String college) {

    UndirGraph<Friend> CollegeRestricted = this.getStudentsAtTheCollege(college).graph;
    ArrayList<ArrayList<Friend>> cliques = CollegeRestricted.getCliques();
    String retstr = "";

    for (int i = 0; i < cliques.size(); i++) {
      retstr += "clique " + (i + 1) + ": \n\n" + cliques.get(i).size() + "\n";
      for (int j = 0; j < cliques.get(i).size(); j++)
        retstr += cliques.get(i).get(j).toString() + "\n";

      HashSet<String> s = new HashSet<String>();

      for (int j = 0; j < cliques.get(i).size(); j++) {
        for (int k = 0; k < cliques.get(i).size(); k++) {

          if (this.graph.containsEdge(
              this.graph.vertexNumberOf(cliques.get(i).get(j)),
              new Neighbor(this.graph.vertexNumberOf(cliques.get(i).get(k))))) {

            String nameOne = cliques.get(i).get(j).name,
                nameTwo = cliques.get(i).get(k).name,
                nameCom = "";

            if (nameOne.compareTo(nameTwo) < 0) nameCom = nameOne + "|" + nameTwo;
            else if (nameOne.compareTo(nameTwo) > 0) nameCom = nameTwo + "|" + nameOne;

            s.add(nameCom);
          }
        }
      }

      for (String adj : s) retstr += adj + "\n";
    }
    return retstr;
  }