Guest User

Untitled

a guest
Jun 18th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.io.PrintWriter;
  6. import java.util.StringTokenizer;
  7.  
  8. public class dsu implements Runnable {
  9. StringTokenizer st;
  10. BufferedReader in;
  11. PrintWriter out;
  12. node[] elements;
  13.  
  14. class node {
  15.  
  16. int parent;
  17. int val;
  18. int size;
  19. int min;
  20.  
  21. public node(int val) {
  22. parent = val;
  23. this.val = val;
  24. size = 1;
  25. min = val + 1;
  26. }
  27. }
  28.  
  29. int findSet(int i) {
  30. if (elements[i].parent == i) {
  31. return i;
  32. } else {
  33. elements[i].parent = findSet(elements[i].parent);
  34. return elements[i].parent;
  35. }
  36.  
  37. }
  38.  
  39. void union(int x, int y) {
  40. if (x == y) {
  41. return;
  42. }
  43. if (elements[x].size < elements[y].size) {
  44. elements[x].parent = y;
  45. } else {
  46. elements[y].parent = x;
  47. if (elements[x].size == elements[y].size) {
  48. elements[x].size++;
  49.  
  50. }
  51. }
  52. }
  53.  
  54. public static void main(String[] args) {
  55. new Thread(new dsu()).run();
  56.  
  57. }
  58.  
  59. public void run() {
  60. try {
  61. in = new BufferedReader(new FileReader("dsu.in"));
  62. out = new PrintWriter(new FileWriter("dsu.out"));
  63. solve();
  64. } catch (Exception e) {
  65. e.printStackTrace();
  66. } finally {
  67. out.flush();
  68. out.close();
  69. }
  70. }
  71.  
  72. String nextToken() throws IOException {
  73. while (st == null || !st.hasMoreTokens()) {
  74. st = new StringTokenizer(in.readLine());
  75. }
  76. return st.nextToken();
  77. }
  78.  
  79. int nextInt() throws NumberFormatException, IOException {
  80. return Integer.parseInt(nextToken());
  81. }
  82.  
  83. void solve() throws NumberFormatException, IOException {
  84. int n = nextInt();
  85. for (int i = 0; i < n; i++) {
  86. elements[i] = new node(i);
  87. }
  88. while (in.ready()) {
  89. String str;
  90. str = nextToken();
  91. switch (str.charAt(0)) {
  92. case 'u':
  93. union(findSet(nextInt() - 1), findSet(nextInt() - 1));
  94. break;
  95. case 'g':
  96.  
  97. break;
  98. }
  99. }
  100.  
  101. }
  102. }
Add Comment
Please, Sign In to add comment