Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.io.UnsupportedEncodingException;
- import java.util.ArrayList;
- import java.util.Scanner;
- public class DSU {
- public static void main(String[] args) throws IOException, FileNotFoundException, UnsupportedEncodingException {
- Scanner input = new Scanner(new File("C:\\Users\\asus\\eclipse-workspace\\DSU\\dsu.in.txt"));
- PrintWriter writer = new PrintWriter("C:\\Users\\asus\\eclipse-workspace\\DSU\\dsu.out.txt");
- int n;
- n = input.nextInt();
- ArrayList<Integer> sum = new ArrayList<Integer>();
- ArrayList<Integer> min = new ArrayList<Integer>();
- ArrayList<Integer> max = new ArrayList<Integer>();
- ArrayList<Integer> value = new ArrayList<Integer>();
- for (int i = 0; i <= n; i++) {
- min.add(i);
- max.add(i);
- sum.add(1);
- value.add(i);
- }
- while (input.hasNext()) {
- String s;
- s = input.next();
- if (s.equals("union")) {
- int x;
- int y;
- x = input.nextInt();
- y = input.nextInt();
- int k = sum.get(x) + sum.get(y);
- if (value.get(x) != value.get(y)) {
- for (int i = 1; i <= n; i++) {
- if (value.get(i) == value.get(x) || value.get(i) == value.get(y)) {
- sum.set(i, k);
- }
- if (value.get(i) == value.get(y)) {
- value.set(i, value.get(x));
- }
- }
- }
- if (min.get(x) < min.get(y)) {
- for (int i = 1; i <= n; i++) {
- if (value.get(i) == value.get(y)) {
- min.set(i, min.get(x));
- }
- }
- } else {
- for (int i = 1; i <= n; i++) {
- if (value.get(i) == value.get(x)) {
- min.set(i, min.get(y));
- }
- }
- }
- if (max.get(x) < max.get(y)) {
- for (int i = 1; i <= n; i++) {
- if (value.get(i) == value.get(x)) {
- max.set(i, max.get(y));
- }
- }
- } else {
- for (int i = 1; i <= n; i++) {
- if (value.get(i) == value.get(y)) {
- max.set(i, max.get(x));
- }
- }
- }
- } else if (s.equals("get")) {
- int f;
- f = input.nextInt();
- // System.out.println(min.get(f) + " " + max.get(f) + " " + sum.get(f));
- writer.println(min.get(f) + " " + max.get(f) + " " + sum.get(f));
- }
- }
- input.close();
- writer.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement