Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.40 KB | None | 0 0
  1. package ee.ttu.algoritmid.bond;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5.  
  6. public class AL08 {
  7.  
  8.     public enum Network {
  9.         FRIENDLY, UNFRIENDLY, UNKNOWN;
  10.     }
  11.     Map<String, Network> people;
  12.  
  13.     private DisjointSubsets disjointSubsets = new DisjointSubsets();
  14.  
  15.     public AL08() {
  16.         people = new HashMap<>();
  17.         addPerson("A");
  18.         addPerson("U");
  19.         friendly("A");
  20.         unfriendly("U");
  21.     }
  22.  
  23.     public DisjointSubsets getDisjointSubsets() {
  24.         return disjointSubsets;
  25.     }
  26.  
  27.     public void talkedToEachOther(String name1, String name2) {
  28.  
  29.         String rootOne = disjointSubsets.find(name1);
  30.         String rootTwo = disjointSubsets.find(name2);
  31.         if(people.get(rootOne) != people.get(rootTwo))
  32.         {
  33.             if(people.get(rootOne) == Network.UNKNOWN)
  34.             {
  35.                 people.put(rootOne, people.get(rootTwo));
  36.             }
  37.             else
  38.             {
  39.                 people.put(rootTwo, people.get(rootOne));
  40.             }
  41.         }
  42.         disjointSubsets.union(name1,name2);
  43.     }
  44.  
  45.     public void addPerson(String name) {
  46.         disjointSubsets.addSubset(name);
  47.         people.put(name, Network.UNKNOWN);
  48.     }
  49.  
  50.     public void friendly(String name) {
  51.         people.put(name, Network.FRIENDLY);
  52.     }
  53.  
  54.     public void unfriendly(String name) {
  55.         people.put(name, Network.UNFRIENDLY);
  56.     }
  57.  
  58.     public Network memberOfNetwork(String name) {
  59.         String root = disjointSubsets.find(name);
  60.  
  61.         return people.get(root);
  62.     }
  63.  
  64.     public static void main(String[] args) {
  65.         DisjointSubsets d = new DisjointSubsets();
  66.  
  67.         d.addSubset("P1");
  68.         d.addSubset("P2");
  69.         d.addSubset("P3");
  70.  
  71.         d.union("P2", "P1");
  72.         d.union("P3", "P2");
  73.  
  74.         System.out.println("P3 root: " + d.find("P3")); // peaks olema P1
  75.  
  76.         d.addSubset("P11");
  77.         d.addSubset("P12");
  78.         d.addSubset("P13");
  79.         d.addSubset("P14");
  80.  
  81.         d.union("P12", "P11");
  82.         d.union("P13", "P12");
  83.         d.union("P12", "P14");
  84.  
  85.         System.out.println("P13 root: " + d.find("P13")); // peaks olema P11
  86.  
  87.         System.out.println("\nP1 root before subsets join: " + d.find("P1")); // peaks olema P1
  88.         d.union("P3", "P14");
  89.         System.out.println("P1 root after subsets join: " + d.find("P1")); // peaks olema P11
  90.  
  91.     }
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement