Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public boolean contractEdge(V vertex1, V vertex2) {
- if (!adjList.containsKey(vertex1) || !adjList.containsKey(vertex2))
- return false;
- if (this.getEdge(vertex1, vertex2) != -1 ||
- this.getEdge(vertex2, vertex1) != -1) {
- if (vertex1.compareTo(vertex2) < 0) {
- for (V v : adjList.get(vertex2).keySet()) {
- if (v.compareTo(vertex1) != 0) {
- System.out.println("Added: outgoing: " + v);
- this.addEdge(vertex1, v, this.getEdge(vertex2, v));
- }
- }
- for (V v : adjList.keySet()) {
- if (adjList.get(v).keySet().contains(vertex2) &&
- v.compareTo(vertex1) != 0) {
- System.out.println("Added: incoming");
- this.addEdge(v, vertex1, this.getEdge(v, vertex2));
- }
- }
- this.removeVertex(vertex2);
- return true;
- } else {
- for (V v : adjList.get(vertex1).keySet()) {
- this.addEdge(vertex2, v, this.getEdge(v, vertex1));
- //this.addEdge(v, vertex2, this.getEdge(vertex2, v));
- }
- for (V v: adjList.keySet()) {
- if (adjList.get(v).keySet().contains(vertex1)) {
- this.addEdge(v, vertex2, this.getEdge(vertex2, v));
- }
- }
- this.removeVertex(vertex1);
- return true;
- }
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement