Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public boolean isBipartit() {
- HashSet<Vertex> trueGroup = new HashSet<Vertex>();
- HashSet<Vertex> falseGroup = new HashSet<Vertex>();
- HashSet<Vertex> trueGroupCopy = new HashSet<Vertex>();
- HashSet<Vertex> falseGroupCopy = new HashSet<Vertex>();
- boolean finished = false;
- if(vertices.size() == 0){
- return true;
- }
- trueGroup.add(vertices.get(0));
- trueGroupCopy.addAll(trueGroup);
- do{
- for(Vertex v: trueGroup){
- for(Edge e: edges){
- if(e.getSource() == v){
- falseGroup.add(e.getTarget());
- }
- if(e.getTarget() == v){
- falseGroup.add(e.getSource());
- }
- }
- }
- for(Vertex v: falseGroup){
- for(Edge e: edges){
- if(e.getSource() == v){
- trueGroup.add(e.getTarget());
- }
- if(e.getTarget() == v){
- trueGroup.add(e.getSource());
- }
- }
- }
- finished = trueGroup.equals(trueGroupCopy) && falseGroup.equals(falseGroupCopy);
- trueGroupCopy.addAll(trueGroup);
- falseGroupCopy.addAll(falseGroup);
- } while(!finished);
- int oldsize = trueGroup.size();
- trueGroup.removeAll(falseGroup);
- return oldsize == trueGroup.size();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement