Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.StringTokenizer;
- public class dsu implements Runnable {
- StringTokenizer st;
- BufferedReader in;
- PrintWriter out;
- node[] elements;
- class node {
- int parent;
- int val;
- int size;
- int min;
- public node(int val) {
- parent = val;
- this.val = val;
- size = 1;
- min = val + 1;
- }
- }
- int findSet(int i) {
- if (elements[i].parent == i) {
- return i;
- } else {
- elements[i].parent = findSet(elements[i].parent);
- return elements[i].parent;
- }
- }
- void union(int x, int y) {
- if (x == y) {
- return;
- }
- if (elements[x].size < elements[y].size) {
- elements[x].parent = y;
- } else {
- elements[y].parent = x;
- if (elements[x].size == elements[y].size) {
- elements[x].size++;
- }
- }
- }
- public static void main(String[] args) {
- new Thread(new dsu()).run();
- }
- public void run() {
- try {
- in = new BufferedReader(new FileReader("dsu.in"));
- out = new PrintWriter(new FileWriter("dsu.out"));
- solve();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- out.flush();
- out.close();
- }
- }
- String nextToken() throws IOException {
- while (st == null || !st.hasMoreTokens()) {
- st = new StringTokenizer(in.readLine());
- }
- return st.nextToken();
- }
- int nextInt() throws NumberFormatException, IOException {
- return Integer.parseInt(nextToken());
- }
- void solve() throws NumberFormatException, IOException {
- int n = nextInt();
- for (int i = 0; i < n; i++) {
- elements[i] = new node(i);
- }
- while (in.ready()) {
- String str;
- str = nextToken();
- switch (str.charAt(0)) {
- case 'u':
- union(findSet(nextInt() - 1), findSet(nextInt() - 1));
- break;
- case 'g':
- break;
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment