package org.seqcode.gseutils.graphs;
import java.util.*;
public class VertexSet {
private TreeSet<String> verts;
public VertexSet(String vs) {
String[] array = vs.split(",");
verts = new TreeSet<String>();
for(int i = 0; i < array.length; i++) {
verts.add(array[i]);
}
}
public VertexSet(Collection<String> v) {
verts = new TreeSet<String>(v);
}
public int size() { return verts.size(); }
public Collection<String> getVertices() { return new LinkedList<String>(verts); }
public int hashCode() {
int code = 17;
for(String v : verts) {
code += v.hashCode(); code *= 37;
}
return code;
}
public boolean equals(Object o) {
if(!(o instanceof VertexSet)) { return false; }
VertexSet vs = (VertexSet)o;
if(verts.size() != vs.verts.size()) {
return false;
}
for(String v : verts) { if(!vs.verts.contains(v)) { return false; } }
return true;
}
public boolean isClique(Graph g) {
for(String v1 : verts) {
for(String v2 : verts) {
if(!v1.equals(v2)) {
if(!g.isNeighbor(v1, v2) ||
!g.isNeighbor(v2, v1)) {
return false;
}
}
}
}
return true;
}
}