Cod sursa(job #2651308)

Utilizator gheorghe_cristiGheorghe Florin Cristi gheorghe_cristi Data 22 septembrie 2020 10:32:13
Problema Paduri de multimi disjuncte Scor 20
Compilator java Status done
Runda Arhiva educationala Marime 1.34 kb
import java.io.File;
import java.io.FileWriter;
import java.util.Scanner;

public class Main {
	static File input, output;
	static Scanner fin;
	static FileWriter fout;
	
	static int n, m, op, x, y;
	static int[] T = new int[100005];
	
	@SuppressWarnings("unused")
	private static void print(String msg) {
		System.out.println(msg);
	}
	
	private static int radacina(int x) {
		while (T[x] > 0) {
			x = T[x];
		}
		
		return x;
	}
	
	public static void main(String[] args) {
		try {
			input = new File("disjoint.in");
			output = new File("disjoint.out");
			
			if (!input.exists())
				input.createNewFile();
			
			fin = new Scanner(input);
			fout = new FileWriter("disjoint.out");
			
			
			
			n = fin.nextInt();
			m = fin.nextInt();
			
			for (int i = 1;i<=n;++i)
				T[i] = -1;
			
			for (int i=1;i<=m;++i) {
				op = fin.nextInt();
				x = fin.nextInt();
				y = fin.nextInt();
				
				int ra = radacina(x);
				int rb = radacina(y);
				
				if (op == 1) {
					if (T[ra] < T[rb]) {
						T[ra] += T[rb];
						T[rb] = ra;
					} else {
						T[rb] += T[ra];
						T[ra] = rb;
					}
				} else {
					if (ra == rb) {
						fout.write("DA\n");
					} else {
						fout.write("NU\n");
					}
				}
			}
			
			fout.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}