fork(5) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. String input[] = {"1 2", "2 4", "5 6", "4 7", "3 5", "8 9", "9 10", "11 12"};
  13. System.out.println(answer(input));
  14. }
  15.  
  16. public static List<Set<Integer>> answer(String[] pairs){
  17.  
  18. List<Set<Integer>> list = new LinkedList<>();
  19. // For each pair, separate the numbers
  20. //Initialize with initial set
  21. Set<Integer> init = new HashSet<>();
  22. String[] splitted = pairs[0].split(" ");
  23. init.add(Integer.parseInt(splitted[0]));
  24. init.add(Integer.parseInt(splitted[1]));
  25.  
  26. list.add(init);
  27.  
  28. // To be used to maintain set record ahead
  29. List<Set<Integer>> setsRecord = new LinkedList<>();
  30.  
  31. boolean found = false;
  32. Integer i1, i2;
  33. for(String s : pairs){
  34. i1 = Integer.parseInt((splitted = s.split(" "))[0]);
  35. i2 = i2 = Integer.parseInt(splitted[1]);
  36. for(Set<Integer> set : list){
  37. if(set.contains(i1) ||
  38. set.contains(i2)){
  39. // If element has already been found in a set, create a common set
  40. if(setsRecord.size() >= 1){
  41. setsRecord.get(0).addAll(set);
  42. // And remove this set
  43. list.remove(set);
  44. }
  45. else{
  46. set.add(i1);
  47. set.add(i2);
  48. // Maintain a record of this set
  49. setsRecord.add(set);
  50. }
  51. found = true;
  52. }
  53. }
  54. // Empty the set
  55. setsRecord.clear();
  56.  
  57. if(!found){
  58. Set<Integer> newSet = new HashSet<Integer>();
  59. newSet.add(i1);
  60. newSet.add(i2);
  61. list.add(newSet);
  62. }
  63. found = false;
  64. }
  65. return list;
  66. }
  67. }
Success #stdin #stdout 0.04s 4386816KB
stdin
Standard input is empty
stdout
[[1, 2, 4, 7], [3, 5, 6], [8, 9, 10], [11, 12]]