Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. import java.io.File;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.io.PrintWriter;
  6. import java.io.UnsupportedEncodingException;
  7. import java.util.ArrayList;
  8. import java.util.Scanner;
  9.  
  10. public class DSU {
  11. public static void main(String[] args) throws IOException, FileNotFoundException, UnsupportedEncodingException {
  12. Scanner input = new Scanner(new File("C:\\Users\\asus\\eclipse-workspace\\DSU\\dsu.in.txt"));
  13. PrintWriter writer = new PrintWriter("C:\\Users\\asus\\eclipse-workspace\\DSU\\dsu.out.txt");
  14. int n;
  15. n = input.nextInt();
  16. ArrayList<Integer> sum = new ArrayList<Integer>();
  17. ArrayList<Integer> min = new ArrayList<Integer>();
  18. ArrayList<Integer> max = new ArrayList<Integer>();
  19. ArrayList<Integer> value = new ArrayList<Integer>();
  20.  
  21. for (int i = 0; i <= n; i++) {
  22. min.add(i);
  23. max.add(i);
  24. sum.add(1);
  25. value.add(i);
  26. }
  27.  
  28. while (input.hasNext()) {
  29. String s;
  30. s = input.next();
  31. if (s.equals("union")) {
  32. int x;
  33. int y;
  34. x = input.nextInt();
  35. y = input.nextInt();
  36. int k = sum.get(x) + sum.get(y);
  37. if (value.get(x) != value.get(y)) {
  38. for (int i = 1; i <= n; i++) {
  39. if (value.get(i) == value.get(x) || value.get(i) == value.get(y)) {
  40. sum.set(i, k);
  41. }
  42. if (value.get(i) == value.get(y)) {
  43. value.set(i, value.get(x));
  44. }
  45. }
  46. }
  47.  
  48. if (min.get(x) < min.get(y)) {
  49. for (int i = 1; i <= n; i++) {
  50. if (value.get(i) == value.get(y)) {
  51. min.set(i, min.get(x));
  52. }
  53. }
  54. } else {
  55. for (int i = 1; i <= n; i++) {
  56. if (value.get(i) == value.get(x)) {
  57. min.set(i, min.get(y));
  58. }
  59. }
  60. }
  61.  
  62. if (max.get(x) < max.get(y)) {
  63. for (int i = 1; i <= n; i++) {
  64. if (value.get(i) == value.get(x)) {
  65. max.set(i, max.get(y));
  66. }
  67. }
  68. } else {
  69. for (int i = 1; i <= n; i++) {
  70. if (value.get(i) == value.get(y)) {
  71. max.set(i, max.get(x));
  72. }
  73. }
  74. }
  75.  
  76. } else if (s.equals("get")) {
  77. int f;
  78. f = input.nextInt();
  79. // System.out.println(min.get(f) + " " + max.get(f) + " " + sum.get(f));
  80. writer.println(min.get(f) + " " + max.get(f) + " " + sum.get(f));
  81. }
  82. }
  83. input.close();
  84. writer.close();
  85. }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement